我在我的app委托中创建了UITabBarController
。
其中每个标签栏项目包含一个不同的UINavigationController
,用于加载带有NIB的自定义UIViewController
(使用-pushViewController:
)。
在其中一个导航控制器中,我还加载了一个带有自定义NIB的自定义UIView
类。
此视图在UIViewController
内多次加载。
自定义UIView
有一个UIButton
,如果触摸它,我想在堆栈上推送一个新的UIViewController
。
问题是我丢失了UINavigationController
UIViewController
。
我知道我应该使用代表,但是还没弄清楚谁应该成为代表。
提前致谢!
答案 0 :(得分:3)
.navigationController或.tabBarController都不能用于已创建但未被压入堆栈的UIView或UIViewController
在View(或ViewController)类上创建一个属性,该属性是初始化后可选提供的UIViewController,或者您可以向initWithNibName:bundle:
添加第三个参数
@interface CustomViewController : UIViewController
{
UIViewController *owner;
}
@property (nonatomic, assign) UIViewController* owner;
@end
然后在所有者ViewController中:
CustomViewController *cvc = [[CustomViewController alloc] initWithNibNamed:nil bundle:nil];
cvc.owner = self;
太糟糕了.parentViewController是只读的,这将是一个合理的地方。
答案 1 :(得分:0)
您可以使用UIApplication
课程来完成此操作。使用此课程,您可以找到最先放置的viewController
。以下是您的问题的解决方案link。