我是基于NavigationControl的app的代表。
当我尝试使用
访问rootViewController时RootViewController *rootViewController = (RootViewController *)[navigationController topViewController];
运行一个方法,它崩溃了,说rootViewController上的方法是“未知”。
当我使用此
访问rootViewController时RootViewController *rootViewController = (RootViewController *)[navigationController.viewControllers objectAtIndex:0];
它有效。
哪一个对象是第一行访问?
感谢
答案 0 :(得分:8)
topViewController
表示堆栈顶部的视图控制器。索引0
是最低点。仅当一个视图控制器在堆栈上时,topViewController
才是索引0
处的对象。如果你有多个,那就不一样了。我猜这是因为它崩溃了,因为topViewController
不知道如何响应用于RootViewController
实例的消息。
答案 1 :(得分:4)
您可以使用
检查返回的班级类型 NSString *className = NSStringFromClass([[self.navigationController topViewController] class]);
NSLog(@"class name is: %@", className);
如果您想在访问前进行检查,我会使用:
if ([[self.navigationController topViewController] isKindOfClass:[RootViewController class]])