如何获得UIView中的父导航控制器
问题描述:
我在我的应用程序委托中创建了一个UITabBarController
。 其中每个标签栏项目拥有一个不同的UINavigationController
,它使用NIB(使用-pushViewController:
)加载自定义UIViewController
。 在其中一个导航控制器中,我也加载了一个自定义的UIView
类。 该视图在UIViewController
内部多次加载。如何获得UIView中的父导航控制器
自定义UIView
有一个UIButton
,在接触它时,我想在堆栈上推新的UIViewController
。 问题是我'丢失'UINavigationController
持有UIViewController
。 我知道我应该使用代表,但还没有弄清楚谁应该成为代表。
提前致谢!
答
无论.navigationController或.tabBarController将可用于一个已经创建,但入栈
无论是在你的视图中创建一个属性(或视图控制器)类,它是提供了一个UIViewController一个UIView或UIViewController中可选的初始化后,或者你可以然后在主人的ViewController添加第三个参数initWithNibName:bundle:
@interface CustomViewController : UIViewController
{
UIViewController *owner;
}
@property (nonatomic, assign) UIViewController* owner;
@end
:
CustomViewController *cvc = [[CustomViewController alloc] initWithNibNamed:nil bundle:nil];
cvc.owner = self;
这太糟糕了.parentViewController是只读的,这将是明智的地方。
委托人会更好。代表应该在您的视图类中定义,并应由您的所有者实施。其次,owner属性应该在UIView中,而不在UIViewController中。 – 2012-12-26 12:35:14