Iphone - вставить контроллер представления в стек навигации при нажатии кнопки в UITableViewCell - PullRequest
0 голосов
/ 10 февраля 2010

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

Это можно сделать с помощью экземпляра NSNotification, чтобы сообщить контроллеру табличного представления о нажатии кнопки. Но это было бы очень тяжело, особенно потому, что выбор в панели вкладок в приложении мог вызвать появление или исчезновение табличного представления, создавая дополнительные издержки, поскольку различные табличные представления регистрируются и отменяют регистрацию, когда они вкладываются на экран или выходят из него.

Кто-нибудь может придумать лучшее решение?

Ответы [ 3 ]

2 голосов
/ 10 февраля 2010

почему бы не поставить

[[self navigationController] pushViewController:targetViewController animated:YES];

в методе, вызываемом кнопкой?

0 голосов
/ 10 февраля 2010

То, что я сделал, установило делегата табличного представления таким же, как его контроллер.Тогда:

UITableView *myTableView = (UITableView *)self.superview;
NSIndexPath *indexPath = [myTableView indexPathForCell: self];
MyTableViewController *myTableViewController = (MyTableViewController *)(myTableView.delegate);
[myTableViewController buttonWasPressedOnCellWithIndexPath: indexPath];
0 голосов
/ 10 февраля 2010

Заставьте ваш UITableViewController использовать UITableViewDelegate Protocol и реализуйте этот метод:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

Из indexPath вы можете узнать, какая строка была нажата, а затем вы знаете, какая ячейка выбрана. Цель UITableViewController - узнать о ячейках, и самой ячейке не нужна кнопка для запуска события, чтобы выдвинуть новое представление.

...