我的理解是每个视图都有自己的控制器类。我一般都知道xib文件是应用程序视图/子视图。我的问题是MainWindow.xib是否有自己的控制器,如果有,它可以在哪里找到?
答案 0 :(得分:1)
你是对的,xib文件可以允许将视图关联到它的视图控制器。
现在,MainWindow.xib包含您应用的主UIWindow
(至少)。 UIWindow
不是UIView
,也不需要UIViewController
。
另一方面,您可以在MainWindow.xib中创建任何您喜欢的对象,因此您也可以在其中添加UIView
,然后将其添加到UIWindow
实例中,其对应的UIViewController
。
如果你考虑额外的xib,它们会发生什么,它们定义了UIView
,另外还指定了文件的所有者类型,通常是UIViewController
并通过加载xib来实例化。
从这个意义上讲,MainWindow.xib虽然不需要UIViewController
,但仍需要文件所有者,这就是UIApplication
单例。由于您无法修改或从UIApplication
派生类,因此与UIWindow
实例进行交互的方式是通过UIApplication
的委托。
请记住,MainWindow.xib扮演一个特殊的角色,因为它也在info.plist文件中指定。你可以不用一个(通过从info.plist中删除相应的条目),并在从main.c调用UIApplicationMain
时简单地声明你的应用程序委托。在这种情况下,也不是应用程序委托,UIWindow也不会通过xib机制实例化;您需要从应用程序代理UIWindow
实例化applicationDidFinishLaunching
。
答案 1 :(得分:0)
我认为它没有自己的控制器。它是主窗口,基本上是应用程序出现时弹出的东西。我们添加控制器或视图控制器供用户使用。 App委托是一种控制器,但不完全是。我们将applicationDidFinishLaunchingWithOptions覆盖到任何控制器等,因此appdelegate可以被认为是mainwindow.xib的控制器,尽管它不是。