2012-01-25 3 views
1

У меня есть контроллер навигации, который перемещается между некоторыми табличными представлениями, и я только что добавил кнопку «редактировать» внутри ячеек одной из таблиц. Я бы хотел, чтобы пользователь нажал кнопку редактирования внутри ячейки и контроллер навигации шунтировал новое представление, где все содержимое этой ячейки выложено для удобства редактирования.Нажатие нового вида на контроллер навигации с контроллера ячейки зрения

Клетка, однако, не имеет доступа к контроллеру навигации и не может вставить новый контроллер представления в свой стек. Как я могу делать то, что хочу?

Обратите внимание, что я не использую перетекаю и раскадровку, как это старое приложение, и я хочу продолжать поддерживать устройства под управлением IOS 4.

ответ

1

Вы должны поставить перед собой целью кнопки на UIViewController, который уже находится в стеке ?

+0

Я не знал, что вы можете это сделать. Я просто попробовал это и разбил приложение, используя эту строку, когда ячейка создана контроллером tableview ... '[cell.editButton addTarget: self action: @selector (pressEditButton :) forControlEvents: UIControlEventTouchUpInside]; –

+0

Ничего. Я сделал глупую ошибку, и теперь она работает. Весьма признателен. –

+0

Рад, что я мог помочь. В целом хорошая идея - заставить viewcontrollers обрабатывать действия и т. Д., А не uielements, такие как ячейки или представления. Особенно, когда речь заходит о навигации. –

0

Я не уверен, если вы хотите, но вы можете попробовать:

// In action method for edit button 
- (void)editButtonClicked { 
    EditViewController *editViewController = [[EditViewController alloc] initWithNibName:nil bundle:nil]; 
[self.navigationController pushViewController:editViewController animated:YES]; 
[editViewController release]; 
} 
1

Если вы не хотите, чтобы добавить новый вид к навигации (Stack), Просто используйте PresentModalViewController

// In action method for edit button 
- (void)editButtonClicked { 
    EditViewController *editViewController = [[EditViewController alloc] initWithNibName:@"EditViewController" bundle:nil]; 
[self.navigationController presentModalViewController:editViewController animated:YES]; 
[editViewController release]; 
} 
+0

«Я» в моем случае - это ячейка, где находится кнопка, и у нее нет доступа к навигационному контроллеру. –

+0

Если вы не внедрили NavigationController в своем приложении, то удалите навигационный контроллер из синтаксиса. Вы сможете открыть его с новым представлением. Надеемся, что это решит вашу проблему. В противном случае введите здесь код, что вы фактически выполняются в представлении «Переходы». –

+0

Выполнен навигационный контроллер. Проблема в том, что кнопка и, следовательно, этот код находятся в ячейке таблицы. Я могу получить доступ к значку navcontroller из самой таблицы, но ячейка находится на одном уровне и не знает об этом. –

Смежные вопросы