2009-05-25 19 views
7

Düzenleme düğümüm, viewDidLoad içine yerleştirilir:editButtonItem set ama eksi düğmeleri yok mu?

self.navigationItem.rightBarButtonItem = self.editButtonItem; 

Bu, nav çubuğunda doğru şekilde görünür ve bu düğmeye dokunmak gerçekten Bitti olarak değişir. Ancak, tablo satırlarımda eksi düğmeler görünmez. Bir satırı hızlıca kaydırın, sonra da Sil eserleri'ne dokunun.

Herhangi bir fikir?

DÜZENLEME 1: Yaptığım şey:

- (void)loadView { 
tableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 
tableView.delegate = self; 
tableView.dataSource = self; 
tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

self.view = tableView; 
} 

DÜZENLEME 2: Benim gözlemim, tablo görünümüm IB (RootViewController) içinde oluşturulduysa düzenleme ve eksi düğmelerinin iyi görüntülenmesidir. Diğer iki (veya üç) tablo görünümü, yukarıda belirtilen kod tarafından oluşturulur, bu nedenle sorun olabilir. Tahmin et, düzenleme, düzenleme ve neyin peşindeyim.

+1

Neye yüklüyorsunuz? Bu sadece bir UITableViewController mı? UITableViewCell'leriniz garip bir şey yapıyor mu (alt sınıf veya başka bir şekilde)? Bir satırın düzenlenebilir türünü döndürürken görünüm denetleyicisinde komik bir şey yapıyor musunuz? –

+0

Evet, bu UITableViewController sadece düz ol bu. Bir kod ekleyerek yayınımı açıklığa kavuştururdum. –

cevap

11

Aptal bana. UIViewController'ı (görünüm denetleyicimin miras aldığı sınıf) UITableViewController'a değiştirmeyi unuttum. Şimdi çalışıyor.

Bu yapılmadıkça, el gibi satır düzenlemeyi etkinleştirmek gerekir: Eğer UITableViewController alt sınıf yoksa

// in loadView 
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(turnOnEditing)]; 

- (void)turnOnEditing { 
[self.navigationItem.rightBarButtonItem release]; 
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(turnOffEditing)]; 
[self.tableView setEditing:YES animated:YES]; 
} 

- (void)turnOffEditing { 
[self.navigationItem.rightBarButtonItem release]; 
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(turnOnEditing)]; 
[self.tableView setEditing:NO animated:YES]; 
} 
0

Muhtemelen yapmak gerekir. Bu, UITableViewController'un yönlendirdiği özelliktir ve görünümü bir NIB'den yüklüyorsanız otomatik olarak ayarlanır. Görünümü programatik olarak oluşturduğunuzdan, bunu açıkça ayarlamanız gerekir.

+0

Bunu yapmanıza gerek yok. Hatırlanması gereken en önemli şey, UIViewController'dan UITableViewController'a ana sınıfı değiştirmek. –

38

, bunu yapmanın bir yolu yoktur. animasyonlu: Sadece setEditing uygulamak için UIViewController alt sınıfta aşağıdaki gibi:

- (void) setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing: editing animated: animated]; 
    [self.tableView setEditing:editing animated:animated]; 
} 

Not: Gerekirse "self.tableView" yerine ...

Ayrıca araç çubuğu düðmesine "düzenle" ekleyin:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.navigationItem.rightBarButtonItem = self.editButtonItem; 
} 

Ve hepsi bu!

+1

Sen, (efendim ya da bayan), bir dahi bulunmaktadır. – Jonathan

0

Aynı konuyla karşılaştım. UITableViewController belgelerine göre, UITableViewController superclass yöntemi setEditing'i uygular: canlandırılmış: bir kullanıcı gezinme çubuğundaki Edit | Done düğmesine basarsa, kontrolör tablonun düzenleme modunu değiştirir.

UITableViewController belgesindeki son madde işaretine bakın.

1

yapın, göstermek ve tableviewcell her birinin sol köşesinde eksi düğmesini etkinleştirmek için:

sizin viewDidLoad yöntemi için aşağıdaki kodu ekleyin:

self.navigationItem.rightBarButtonItem = self.editButtonItem; 

// yukarıdaki satır, gezinme çubuğunuzun sağ üst köşesinde bulunan "DÜZENLE" ve "DONE" tuşlarını göstermektir.

Ve ayrıca göstermek ve tableview hücreleri üzerinde EKSİ işareti animasyon için .m dosyasına aşağıdaki yöntemi ekleyin.

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
{ 
    [super setEditing:editing animated:animated]; 

    if(editing == YES) { 

    [self.tableView setEditing:editing animated:animated]; 

    } else { 

    [self.tableView setEditing:NO animated:animated]; 

    } 

}