我刚创建了一个简单的Master-Detail应用程序(SplitViewController)。
如果我创建一个新文件 - Objective-C类,其名称为MYCustomSplitViewController,则从UISplitViewController继承/继承,我可以做两件事:
在AppDelegate.m中我有这个,可以清楚地看到* splitViewController是UISplitViewController的一个实例,而不是MYCustomUISplitViewController。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;
return YES;
}
或2.进入Main.Storyboard,选择Split View Controller并将Identity Inspector中的“Custom Class”设置为“none” - 默认为“UISplitViewController”
在AppDelegate.m中,我现在将* splitViewController直接修改为MYCustomUISplitViewController。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
MYCustomUISplitViewController *splitViewController = (MYCustomUISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;
return YES;
}
在第二种情况下,我没有在MYUISplitViewController的-viewDidLoad中获得“点击”。
我不明白......在这种情况下,MYUISplitViewController仅用于创建实例* splitViewController,那就是它吗?之后它不再访问这些方法了?将“自定义类”字段留空是否实际上将其绑定到一些我看不到的UISplitViewController(Apple默认值)?
如果是这样,在第一种情况下设置“自定义类”如何将屏幕上的实例与我文件中的代码联系起来?当我清楚地创建一个MYCustomUISplitViewController实例时,UISplitViewController如何成为屏幕上实例的“自定义类”?
答案 0 :(得分:1)
您在代码中使用的类型只是编译器提示您对变量的期望。在您的第一个示例中,您声明了
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
这让您感到困惑,因为这是UISplitViewController
的一个实例。要让实际的课程注销NSLog(@"%@", splitViewController.class)
。如果您更改了xib中的自定义类,则注销的类应该是您在xib中设置的自定义类