我有一个应用程序,您可以从两个控制器转到一个视图,我想知道是否可以检查它来自哪个,以便我可以根据它来自的控制器执行不同的操作。
提前致谢
答案 0 :(得分:1)
您可以访问UINavigation堆栈,以便在推送新视图时查看前一个视图。
Class aClass = [[[self.navigationController viewControllers] objectAtIndex:self.navigationController.viewControllers.count - 2] class];
if (aClass == [UIViewControllerA class])
//Do something
else if (aClass == [UIVIewControllerB class])
//Do something else
或者为你推送到的单个视图创建一个自定义init方法,允许你传入一个变量来确定它来自哪个视图(抱歉,真的很罗嗦)。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil isFromViewA:(bool)isFromViewA
答案 1 :(得分:0)
我可能必须编写自定义初始化方法并在init期间传递一些东西。
将有不同的方法。这是其中一种方式
yourView.h中的
-(id)initWithType:(int)viewControllerType;
同时创建一个int变量假设int viewType;在yourView.h中
yourView.m文件中的
-(id)initWithType:(int)viewControllerType{
self = [super initWithFrame:CGRectMake(<#CGFloat x#>, <#CGFloat y#>, <#CGFloat width#>, <#CGFloat height#>)];
if (self) {
//custom init here
viewType = viewControllerType;
}
你可以将第一个viewController定义为1,将第二个定义为2。
所以在第一次viewController初始化时你的view。代码应该像
yourView *newView = [yourView alloc] initWithType:1];
所以在第二个viewController中初始化时你的view。代码应该像
yourView *newView = [yourView alloc] initWithType:2];
现在,事情会变得更容易
if(viewType==1){
//do something particular for first view controller
}
if(viewType==2){
//do something particular for second view controller
}
如果不起作用。请分享你的代码......谢谢
答案 2 :(得分:-2)