Данные не загружаются в детализированный контроллер при выборе первой строки - PullRequest
0 голосов
/ 18 апреля 2011

Когда я запускаю рассматриваемое приложение, я загружаю таблицу из массива, полученного из plist. В didSelectRowAtIndexPath я присваиваю значения из массива вспомогательным представлениям контроллера подробных представлений, а затем помещаю контроллер подробных представлений в стек, но при запуске приложения в первый раз выбираю любую строку из таблицы, данные из массива не появляется в моем подробном представлении подпредставлений / полей контроллера. Затем я возвращаюсь к табличному представлению, повторно выбираю строку, и данные затем загружаются в контроллер подробного представления.

В методе контроллера табличного представления didSelectRowAtIndexPath я делаю следующее, где xLabel - это вспомогательное представление UILabel в xib контроллера с принудительным представлением:

self.detailViewController.xLabel.text = [[[xArray objectAtIndex: indexPath.section] objectForKey:@"xDesc"] objectAtIndex:indexPath.row];

Что мне нужно сделать, чтобы данные появлялись при первом выборе строки?

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

Я думаю, что это не работает, потому что в первый раз, когда вы выбираете строку, ваш контроллер подробного представления не находится в стеке памяти, поэтому вы не можете вызвать метод setText метки в предыдущем контроллере представления.Второй раз он работает, потому что он в памяти, так что вы можете вызвать метод set для его компонента.Что я хочу сказать, что когда вы помещаете контроллер подробного вида в стек, просто установите здесь строку подробного контроллера (эта строка должна быть свойством контроллера подробного представления), а затем в методе viewDidLoad контроллера подробного представления установите текст вашей метки.на эту строку.

0 голосов
/ 18 апреля 2011

Если я вас правильно понял, в первый раз нет объекта xLabel, так как он будет создан при «загрузке» UIViewController. Поэтому, когда вы пытаетесь установить текстовое значение, оно не загружается в метку, так как метка отсутствует. Последующие попытки работают так, как метка создается с первой попытки. В любом случае, если вам нужно поделиться некоторыми данными с подробным представлением, сохраните их в словаре или каком-либо другом объекте, а не просто назначайте их непосредственно представлению из текущего контроллера.

...