Nano Hash - криптовалюты, майнинг, программирование

iPhone UITableViewDelegate Вопрос

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

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

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

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

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

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


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

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

  • более простым решением может быть вообще не иметь этого дополнительного класса, а просто реализовать методы делегата табличного представления в вашем корневом классе контроллера. 16.12.2009

Ответы:


1

Ваш 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];
16.12.2009
  • хлопает по лбу Я знал, что упускаю из виду что-то легкое! Я прихожу с Java, поэтому некоторая иерархия в том, как все устроено, все еще нечеткая :) Спасибо! 17.12.2009
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..