UITableView не отвечает на didSelectRowAtIndexPath даже с установленным делегатом - PullRequest
2 голосов
/ 30 декабря 2011

Прежде всего, я совершенно новичок в разработке для iOS, поэтому я надеюсь, что есть более простой способ сделать что-то.

Я использую раскадровку iOS 5 для создания динамически генерируемого представления вопросов.Я пытаюсь встроить UITableViewController в UIViewController, чтобы я мог определять различные типы вопросов, но использовать один и тот же базовый шаблон.Код работает, но когда я пытаюсь выбрать ячейку, didSelectRowAtIndexPath никогда не запускается.Я проверил источник данных и делегата, и они оба установлены на правильный контроллер.Мой код для встраивания:

CGRect questionViewRect = self.QuestionContentView.bounds;
UIViewController<QuestionViewProtocol>* questionView = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:NULL] instantiateViewControllerWithIdentifier:@"MultipleChoiceQuestion"];
[questionView.view setFrame:questionViewRect];
[self.QuestionContentView addSubview:questionView.view];

Опять я делаю это, потому что мне действительно нравится раскадровка, но я хочу динамически изменить это табличное представление на что-то другое для разных типов вопросов.Спасибо за любую помощь!

Вот скриншот моей раскадровки.Я встраиваю вид из контроллера справа в подпредставление контроллера слева.

enter image description here

1 Ответ

0 голосов
/ 31 декабря 2011

Итак, я понял это.Проблема заключалась в том, что контроллер для моего подпредставления создавался в методе и назначался локальной переменной.Это означает, что он не был сохранен, поэтому, когда табличное представление попыталось получить к нему доступ позже, все, что он получил, было нулевым указателем.В target-c методы для нулевых указателей просто возвращают ноль, чтобы программа не вылетала.После того, как я добавил строгий указатель на класс основного контроллера и установил этот контроллер в экземпляр субконтроллера, он работал отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...