3

我是 iOS 世界的新手,并且已经开始在模板代码之上构建自定义代码。所以请原谅我的明显。

View 链以 a 开头,MainWindow.xib其中包含一个 App Delegate 对象、一个 Window 对象和 Application ViewController。我不明白为什么那里需要那些物品。但据我了解,我需要在"Nib Name"属性中提及启动 ViewController 以启动我的自定义视图控制器(称为“EmptyViewController”)。它是一个虚拟视图控制器,只是为了避免由于缺少有效的视图控制器而导致崩溃。

我在内部启动了一个单独的模态视图控制器(MainViewControllerdidFinishLaunchingWithOptions启动模态视图控制器的代码——

self.window.rootViewController = self.viewController;
mainView = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
// present the viewcontroller
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:mainView];

[self.viewController presentModalViewController:navController animated:NO];

// release it, because it's retained as modalViewController
[navController release];

我没有把这个 MainViewController 放在里面MainWindow.xib,因为我想在 MainViewController 的根目录下导航。在里面MainViewController,当按下“帮助”按钮时,我按下 HelpViewController。但是 HelpViewController 不显示任何导航栏。我不懂为什么?

推送导航栏的代码——

HelpViewController *helpVC = [[HelpViewController alloc] init];
[self.navigationController pushViewController:helpVC animated:YES];
[helpVC release];

所以我想了解—— 1)为什么需要 MainWindow.xib?我可以删除它吗?(注意:我试图删除它,但随后出现空白屏幕) 1.a) 为什么所有控件/对象都需要 App Delegate 对象、一个 Window 对象和 Application ViewController 对象?

2) 为什么 HelpViewController 不显示导航栏?3) 我注意到的另一件事是,如果我说 self.presentingViewController,则返回 EmptyViewController 句柄,而 popViewController 将我返回到 MainViewController。

谢谢

4

1 回答 1

0

App Delegate 只是实现了一些应用级别的“回调”,iOS 通过这些回调与您自己的代码进行通信。在 main.m 中,您可以看到 iOS 是如何被告知您的哪些类实现的UIApplicationDelegate。iOS 创建此类的一个实例,并在适当的时候(例如,当应用程序进入后台时)调用这些委托方法(“回调”)。

Window 是 iOS 提供的东西,你的应用程序需要告诉它要显示什么。而且,正如您所看到的,这通常在didFinishLaunchingWithOptions(由 iOS 调用以通知您的应用程序已准备好开始)完成。

View Controller 是一个类,它处理您在 Window 上显示的内容的状态。您不会直接在 Window 上显示内容,而是使用 Views。每个 View Controller 都有一个带有 UI 元素的 View。

XIB 或 NIB 是 UI 描述/布局文件。A XIB 和 View 链接在一起;您需要告诉XIB UILabelUI 元素属于哪个View Controller 成员(例如a),并且您告诉XIB 在某个UI 事件(例如用户点击按钮)上调用哪个View Controller 方法。

这些是基础。我知道它不能回答你所有的问题。我建议您阅读非常好的 Apple 文档。不要试图立即理解所有事物,因为你正在体验的事物,一开始确实看起来不合逻辑。

于 2013-08-28T13:00:46.167 回答