У меня есть ViewController (с видом контейнера), встроенный в контроллер навигации. Контейнер содержит pageViewController с одной из «страниц», которая является TableViewController (с выходом UITableView: «aTableView»). Я хочу вызвать режим редактирования в tableViewController, когда вы нажимаете пользовательскую кнопку editButton на панели навигации. Когда я создаю настраиваемый editutton в tableViewController, режим редактирования работает так, как ожидалось, но когда я использую пользовательский editButton в навигационной панели, значение setooling bool остается равным нулю, даже когда я устанавливаю Editing в YES в селекторе editButton. Вот код:Переключить режим редактирования в другой ViewController
ViewController.m
-(void)viewDidLoad {
self.editBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[self.editBtn setFrame:CGRectMake(0, 0, 40, 22)];
[self.editBtn addTarget:self action:@selector(goToToggleEdit:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *editButton=[[UIBarButtonItem alloc]initWithCustomView:self.editBtn];
self.navigationItem.rightBarButtonItem = editButton;
}
-(void)goToToggleEdit:(id)sender
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
TableViewController *tvc = [storyboard instantiateViewControllerWithIdentifier:@"aTableViewController"];
if(something==foo){
[tvc toggleEdit];
}
}
aTableViewController.h
@interface aTableViewController : UITableViewController <UITextFieldDelegate> {
IBOutlet UITableView *aTableView;
}
-(void) toggleEdit ;
@end
aTableViewController.m
-(void)toggleEdit {
[aTableView setEditing:YES animated:YES];
NSLog(aTableView.editing ? @"Yes" : @"No"); // --> logss 'No'.
if (aTableView.editing){
//do something
}
else {
//do something else
}
}
Как я могу эффективно запускать режим редактирования в tableViewController таким образом?
Редактировать
@Bagrat Киракосян указал мне, что моя точка зрения иерархии (Navigation Controller> View Controller (с containter)> Page View Controller (в контейнере)> Table View Controller) может быть проблема. Я просто хочу создать панель навигации (с кнопкой редактирования), которая исправлена, поэтому я не могу встроить контроллер табличного представления непосредственно в контроллер навигации.
Спасибо.
UPDATE: Решение
я принял @ решение Себастьен в хотя оба @ Себастьен х и @ решения работе Баграта большой. Ответ Баграта включает прямой доступ к контроллерам табличного представления, а решение @ sebastien вызывает режим редактирования в pageViewController. Я думаю, что, учитывая сложную иерархию, последняя немного более безопасна.
Вы должны предоставить больше своего кода, особенно нам нужно посмотреть, как вы реализуете свой 'UITableView' и ваш editButton' –
. Я обновил некоторые примеры кода. – Baekel
Попробуйте изменить 'if (something == foo)' с 'if (true)' –