iPhone UITableViewDelegate Вопрос - PullRequest
       5

iPhone UITableViewDelegate Вопрос

1 голос
/ 16 декабря 2009

У меня есть основной вопрос, который сводит меня с ума.

У меня есть класс, наследующий от UITableViewController. Это корневой контроллер в моем контроллере навигации. У меня есть другой класс, который реализует протоколы UITableViewDelegate и UITableViewDataSource (мой делегат).

В основном, в tableView моего делегата: didSelectRowAtIndexPath: метод, я хочу выдвинуть новый контроллер.

Когда протоколы делегатов были просто реализованы UITableViewController, это было легко:

[self.navigationController pushViewController:nextController animated:YES];

Я (очевидно) не могу этого сделать в классе делегатов. Как, черт возьми, я обращаюсь к подклассу UITableViewController, чтобы получить доступ к navigationController? Это сводит меня с ума!


Основной поток:

  1. UITableViewController вызывает делегата
  2. делегат запускает tableView: didSelectRowAtIndexPath:
  3. в табличном представлении делегата: didSelectRowAtIndexPath :, код должен вставить новый контроллер в navigationController
  4. делегат не имеет ссылки на navController или TableViewController для выполнения push.
  5. код выдает ошибку компилятора, если я пытаюсь передать в делегат tableController или navController через свойство. поэтому я не могу дать ему ссылку на вызывающую таблицу ViewController

1 Ответ

0 голосов
/ 16 декабря 2009

Ваш UIApplicationDelegate должен иметь ссылку на контроллер навигации. Вам на самом деле не нужна ссылка на UITableViewController.

Вы можете просто сделать что-то вроде этого:

// Get the App delegate
YourAppDelegate * app = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];

// Get the UINavigationController used by the application
UINavigationController * nav = app.navigationController;

// Push the next view controller
[nav pushViewController:nextController animated:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...