我需要将UIView
推送到我的UINavigation controller
。我是通过
[self.view addSubview:showContactFlow];
在UIView上单击按钮,我需要在UIView
上推送另一个UIViewController。从UIView
我无法访问self.navigationcontroller
我该怎么做?
编辑:
我已将UIView
设置为我正在推送的新UIViewController
的视图,前面提到的UIViewController
。现在我想知道,如何处理UIView
内的UIViewController
按钮事件,其中的视图已设置。
答案 0 :(得分:1)
将UINavigationController
ivar添加到UIView
并将其分配给主视图控制器。然后,您应该可以从UIView
。
编辑:
您的UIView子类:
// CustomView.h
@interface CustomView: UIView {
// ...
// your variables
// ...
UINavigationController *navController;
}
@property (nonatomic, assign) UINavigationController *navController; // assign, because this class is not the owner of the controller
// custom methods
@end
// CustomView.m
@implementation Customview
// synthesize other properties
@synthesize navController;
// implementation of custom methods
// don't release the navigation controller in the dealloc method, your class doesn't own it
@end
然后在[self.view addSubview:showContactFlow];
行之前添加[showContactFlow setNavController:[self navigationController]];
,然后您就可以从UIView
访问层次结构的导航控制器,并使用它来推送其他UIViewController
s
答案 1 :(得分:0)
您应该尝试使用MVC方法。因此,您的控制器可以访问所有这些内容并且可以继续推送和弹出视图,因此视图不需要对控制器了解太多。
否则,在这种情况下,您可以使用委派快速解决问题。所以:
showContactFlow.delegate = self;
[self.view addSubview:showContactFlow];
稍后在UIView
中,您可以说:
[self.delegate addSubview:self];
这会起作用,但它不太可能是你应该使用的最佳方法。
答案 2 :(得分:0)
单击按钮,可以显示视图控制器,如
-(void)buttonFunction{
ThirdVC *third= [[ThirdVC alloc]initWithNibNme];......
[self presentViewController:third animated:NO];
}
使用Core动画,您可以在ThirdVC的viewWillAppear:方法中编写NavigationController的pushviewController,就像动画一样。
答案 3 :(得分:0)
你在哪里添加UIButton是在showContactFlow视图中还是在ViewController的视图中?
关于modalViewControllers问题,正确的方法是
[self presentModalViewController:viewController animated:YES];
向上的标准动画