Где поставить Root Controller? - PullRequest
0 голосов
/ 02 июля 2010

Я все лучше и лучше справляюсь с делами для iPhone в xcode, но здесь я зашел в тупик.

Я пытаюсь создать приложение с двумя представлениями: основным и одним для настроек. Я хочу иметь возможность переключаться между ними двумя. Поскольку мне нужен каждый пиксель в главном представлении, я создал класс switchView, который просто переключается между двумя представлениями, когда я нажимаю кнопку (намного меньше, чем tabView), что прекрасно работает.

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

Моя проблема в том, что я заставляю табличное представление (в настройках) работать, но как только я пытаюсь подтолкнуть свой контроллер представления, ничего не происходит. Во время отладки я вижу, что он работает через код (например, didSelectRowAtIndexPath работает), но не открывается новое представление. Ни одного сообщения об ошибке.

У меня есть switchView, добавленный в мой MainWindow.xib, а затем сделать [окно addSubview: switchViewController.view]; в моем AppDelegate, чтобы загрузить основной вид.

Где мне поставить корневой контроллер для навигации по представлению таблицы? Потому что, полагаю, у меня проблема?

Ниже кода, который ничего не дает ...

ViewsAppDelegate *delegate =[[UIApplication sharedApplication] delegate];

    [delegate.settingsNavController pushViewController:settingsDetailViewController animated:YES];

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

1 Ответ

0 голосов
/ 02 июля 2010

Возможно, я неправильно понимаю, что вам нужно, но позвольте мне попробовать ...

Когда вы создавали свой проект, вы должны были получить MainViewController и AppDelegate, которые как раскручивались, так и создавались для вас.Из предоставленного вами фрагмента мне кажется, что вы создаете новый (и, возможно, второй) делегат приложения из вашего MainViewController.

Вместо того, чтобы делать это, я бы посоветовал вам переместить ваш NavigationController на один уровень выше.в AppDelegate, предоставленный SDK.Затем в вашем MainViewController добавьте существующий AppDelegate в качестве IBOutlet и свяжите их все вместе в IB.Как только вы это сделаете, использование навигационного контроллера должно стать более плавным.

Например, мой MainWindow.xib имеет несколько объектов, и я выделил два, которые, я думаю, вас, вероятно, интересуют...

http://www.freeimagehosting.net/uploads/f50268da03.png

* Извините за ссылку - я пока не могу опубликовать изображения.

Затем из своего AppDelegate я настраиваю свое applicationDidFinishLaunchingWithOptions, как это...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

  navController.viewControllers = [NSArray arrayWithObject:mainMenuController];

  // Override point for customization after app launch    
  [window addSubview:navController.view];
  [window makeKeyAndVisible];

  return YES;
}

Это удерживает navController на самом высоком уровне (где я думаю, что он принадлежит) и позволяет перемещать и просматривать представления во всем приложении, сохраняя при этом историю того, что находится в стеке.

Надеюсь, это поможет - возможно, я неправильно понял, что вы искали.

Удачи!Боб

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