Создайте новый экземпляр UIViewController внутри себя - PullRequest
0 голосов
/ 28 июня 2009

У меня есть экземпляр UIViewController, отображающий список элементов. Когда пользователь выбирает элемент, мне нужно создать новый экземпляр UIViewController (заполненный другим списком элементов) и показать его. В данный момент я вызываю конструктор из метода didSelectRowAtIndexPath

    RootViewController *rootViewController = [[RootViewController alloc]initWithStyle:UITableViewStylePlain];
UIViewController *targetViewController = rootViewController;
[[self navigationController] pushViewController:targetViewController animated:NO];

Но вместо создания нового объекта он использует текущий: новый вид содержит элементы из нового списка, а также из предыдущего списка. Итак, как мне создать новый экземпляр RootViewController из самого себя?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2009

Действительно смутно:

1) Импортируйте файл заголовка 2-го уровня в этот файл реализации. Вернуться на 2-й уровень есть геттеры / сеттеры. На вашем 1-м уровне добавьте еще один метод - (BOOL) set2ndLevelDataBasedOnXMLSource: (id) source в этом методе установите соответствующие переменные экземпляра и выполните вычисления для установки данных.

2) Ваш код в didSelectRow должен выглядеть следующим образом:

    if(!rootViewController) {
RootView *rootViewController = [[RootView alloc] initWithstyel...]; }

BOOL result = [self set2ndLevelDataBasedOnXMLSource:_Source_];

if(result) {
[[self navigationController] pushViewController:targetViewController animated:NO]; }

Тогда вы можете изменить его:

if([self set2ndLevelDataBasedOnXMLSource:_Source_])  {
[[self navigationController] pushViewController:targetViewController animated:NO]; }

3) in - (BOOL) set2ndLevelDataBasedOnXMLSource: (id) source {

У меня есть:

NSUInteger result;
if(source == true) {

2ndLevelController.section1data = [source (parse for)...];

2ndLevelController.section2data = [source (parse for ...)];

...

result = 1; }
else { result = 0; }

return result;

4) на моем 2-м уровне, под viewWillDisappear, я установил все эти переменные экземпляра в nil (это изменяемые массивы)

Вот как я это сделал.

0 голосов
/ 29 июня 2009

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

Где вы храните данные для таблицы?

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

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