UITableViewController как ChildViewController, не вызывающий методы делегата

У меня есть UITableViewController, когда я использую его как «начальный контроллер представления», он работает отлично. Теперь я использую его как «контроллер дочернего представления» другого контроллера представления, но теперь, когда я пытаюсь выбрать строку, метод «didSelectRow» не вызывается, а когда я долго нажимаю на ту же строку, метод «didSelectRow» вызывается. Я рассмотрел почти каждый вопрос о UITableviewController на SO, но до сих пор не нашел решения этой проблемы.

Я использую XCode 6, и следующий код используется для добавления его в качестве дочернего контроллера представления.

[self addChildViewController:vc];
[self.ringtoneView addSubview:vc.view];
[vc didMoveToParentViewController:self];

Любая помощь будет принята с благодарностью.


person SandeepAggarwal    schedule 29.11.2014    source источник


Ответы (2)


Наконец мне удалось решить проблему благодаря этому ответу https://stackoverflow.com/a/18159463/3632958

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

person SandeepAggarwal    schedule 30.11.2014

Когда вы вызываете метод

[self addChildViewController:vc];

вы просто говорите родительскому контроллеру просмотра, чтобы перенаправить внешний вид и метод ориентации, например

  • ViewWillAppear:
  • ViewDidAppear:
  • viewWillDisappear:
  • ViewDidDisappear:
  • willRotateToInterfaceOrientation: продолжительность:
  • willAnimateRotationToInterfaceOrientation: продолжительность:
  • didRotateFromInterfaceOrientation:

Поэтому я думаю, что лучше создать UITableView и назначить родительский контроллер представления в качестве делегата и источника данных табличного представления. Таким образом, ваш контроллер представления должен принять протокол UITableViewDelegate и UITableViewDataSource.

person Y.Bonafons    schedule 29.11.2014
comment
Это сработает, но я не хочу идти по этому пути, вопрос в том, почему UITableViewController не работает должным образом при добавлении в качестве childViewController. - person SandeepAggarwal; 29.11.2014
comment
Хорошо, тогда я думаю, вам нужно поставить [self addChildViewController:vc]; и [self.ringtoneView addSubview:vc.view]; в методе viewdidAppear родительского контроллера просмотра. [vc didMoveToParentViewController: сам]; не полезно. - person Y.Bonafons; 29.11.2014
comment
Я не добавляю childViewController в viewDidLoad, но динамически во время выполнения при выполнении некоторого условия - person SandeepAggarwal; 29.11.2014