哪里放根控制器?

时间:2010-07-02 10:05:56

标签: objective-c uitableview uinavigationcontroller

我在xcode中为iPhone做事情越来越好,但在这里我遇到了死胡同。

我正在尝试使用两种视图构建一个应用程序:主要的一个和一个用于设置。我希望能够在他们两个之间切换。由于我需要主视图中的每个像素,我已经构建了一个switchView类,当我按下一个按钮(比tabView小得多)时,它只在两个视图之间切换,这很好。

现在我在开发方面有点深入,并希望设置视图成为一个表视图,从中可以导航到下一个详细级别。我以前做过这个,但没有切换视图。

我的问题是我让表视图(在设置中)工作,但是一旦我尝试推动我的视图控制器没有任何反应。在调试时我可以看到它通过代码工作(例如didSelectRowAtIndexPath正在工作)但没有弹出新视图。没有任何错误消息。

我在我的MainWindow.xib中添加了switchView,然后执行了操作 [window addSubview:switchViewController.view];在我的AppDelegate中加载主视图。

我应该将根控制器放在表视图的导航中?因为我猜那是我的问题?

代码下面没有任何结果......

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

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

对任何可能引导我走上正轨的建议感到高兴。花了太多时间来解决这个问题。

1 个答案:

答案 0 :(得分:0)

我可能误解你所追求的是什么,但让我试试......

当你创建项目时,你应该已经为你创建了MainViewController和一个AppDelegate。从你提供的代码片组中,它就像你在MainViewController中实例化一个新的(可能是第二个)app代理一样。

我建议您将NavigationController向上移动一级到SDK提供的AppDelegate,而不是这样做。然后在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保持在最高级别(我认为它属于),并允许您在整个应用程序中推送和弹出视图,同时保留堆栈中的内容的历史记录。

希望有所帮助 - 我可能完全误解了你的想法。

祝你好运! 鲍勃