目标检查用户刚刚来自哪个视图

时间:2013-08-22 17:26:45

标签: iphone ios objective-c parent parentviewcontroller

我有一个应用程序,您可以从两个控制器转到一个视图,我想知道是否可以检查它来自哪个,以便我可以根据它来自的控制器执行不同的操作。

提前致谢

3 个答案:

答案 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)

我自己解决了这个问题。我做了一个nsobject然后当我离开控制器时,我将它添加到数组中,如果它存在则更新它然后在下一个控制器中,如果对象中元素的值等于它来自的控制器的名称它做了额外的事情