2013-04-17 3 views
0

У меня есть пользовательский контроллер представления таблиц с именем pfTableViewController и пользовательская ячейка с именем customTableViewCell.Ошибка Xcode при просмотре пользовательского объекта

Изнутри моего customTableViewCell Я пытаюсь получить доступ к NSMutableArray из pfTableViewController:

- (IBAction)changeEditing:(UITextField *)sender { 
    pfTableViewController *pfWin = (pfTableViewController *) self.superview.superview; 
    [pfWin.pfFields replaceObjectAtIndex: myId withObject: @"some text"]; 
} 

Я использовал SuperView дважды, потому что первый называет UITableView, и второй должен вызвать pfTableViewController, но это не Я получаю эту ошибку:

2013-04-17 09:48:38.017 webgopher[21757:907] -[UIViewControllerWrapperView pfFields]: unrecognized selector sent to instance 0x1d590d90

Любая идея, что здесь происходит?

Если я использую еще один супервизор, он обращается к UINavigationTransitionView, это слишком далеко, я думаю!

+0

ли вид таблицы вложен в навигационном контроллере? –

+0

Вид таблицы вложен в этот настраиваемый контроллер представления таблиц. И это в моей mainStoryboard – Demulis

ответ

0

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

Вы также считаете, что супер-представление таблицы представляет собой экземпляр вашего контроллера вида. Но экземпляр контроллера представления не является представлением, а не частью иерархии представлений. Вместо этого вы получаете приватное представление apple, которое обертывает вид контроллера представления.

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

 Смежные вопросы

  • Нет связанных вопросов^_^