Ошибка установки делегата UITableView и источника данных из prepareForSegue: sender: - PullRequest
0 голосов
/ 09 января 2012

Я использую prepareForSeque:sender: для динамической установки свойств делегата и источника данных UITableView, прежде чем он будет помещен в стек навигации. Методы делегата никогда не вызываются, и XCode возвращает ошибку ниже. К сожалению, XCode не дает мне большого количества трассировки стека, и единственным указанием того, какой объект используется в качестве источника данных, является экземпляр UIViewControllerWrapperView, который, я думаю, может быть чем-то, сгенерированным библиотекой раскадровки. Есть идеи? Это даже невозможно?

Ошибка:

* Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [UIViewControllerWrapperView tableView: numberOfRowsInSection:]: нераспознанный селектор отправлен экземпляр 0x7f49370 '

Вот мой код:

/**
 * Handle the various segues
 *
 * @author Jesse Bunch
 **/
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // Get the selected cell
    NSIndexPath *selectedIndexPath = self.tableView.indexPathForSelectedRow;
    ReportTableViewCell *cell = (ReportTableViewCell *)[self.tableView cellForRowAtIndexPath:selectedIndexPath];

    // Instantiate the selected report's context
    // TODO: Insert error handling here
    Class reportClass = NSClassFromString([cell.reportInfo objectForKey:@"ReportClass"]);
    BaseReportContext *reportContext = [[reportClass alloc] init];
    reportContext.delegate = self;

    // Get the destination options controller
    ReportOptionsTableViewController *optionsController = (ReportOptionsTableViewController *)segue.destinationViewController;

    // Let the report context be the delegate of the options controller
    // The report context should contain all the information needed
    // to display the necessary report customization options
    optionsController.tableView.delegate = reportContext;
    optionsController.tableView.dataSource = reportContext;


}

1 Ответ

2 голосов
/ 09 января 2012

Будете ли вы затем пытаться сохранить объекты делегата / ds более надежным способом (скажем, сохраняя его в var / property array / dictionary)?я полагаю, что делегат не должен быть сохранен объектом, может случиться так, что все reportContext будут освобождены.по крайней мере, журнал идеально соответствует случаю проблемы управления памятью, я думаю, вы сами это заметили.

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