Objective c 在解除ViewControllerInitiated后,如何捕获UIViewController何时显示
我有两个Objective c 在解除ViewControllerInitiated后,如何捕获UIViewController何时显示,objective-c,Objective C,我有两个uiviewcontroller。我正在使用模态序列到第二个,回来时我使用dismissViewControllerAnimated。当我回到第一个方法时,我想启动一个方法。我该怎么做 在解除ViewControlleranimated并在第一个UIViewController中捕获它之前,我尝试触发一个自定义通知,但它没有捕获任何内容,因为它在触发时仍在第二个通知上。我可以看到一些简单的选项 在您要解雇的视图中使用viewdiddemouse:方法 dismissViewControl
uiviewcontroller
。我正在使用模态序列到第二个,回来时我使用dismissViewControllerAnimated
。当我回到第一个方法时,我想启动一个方法。我该怎么做
在
解除ViewControlleranimated
并在第一个UIViewController
中捕获它之前,我尝试触发一个自定义通知,但它没有捕获任何内容,因为它在触发时仍在第二个通知上。我可以看到一些简单的选项
在您要解雇的视图中使用viewdiddemouse:
方法
dismissViewControllerAnimated:completion:
方法接受在dismissing视图中执行viewdidegale
后实际执行的块
要将引用从一个视图控制器传递到下一个视图控制器,请执行以下操作: 在第二个视图控制器的
.h
文件中,添加一个属性:
@property (nonatomic,strong) FirstViewController *firstVC;
在第一个视图控制器中,添加以下方法:
- (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender {
if([@"segue_YOUR_SEGUE_NAME" isEqualToString:[segue identifier]]) {
if([[segue destinationViewController] isKindOfClass:
[SecondViewController class]]) {
SecondViewController *dest = (SecondViewController*)[segue
destinationViewController];
dest.firstVC = self;
}
}
}
现在,在第二个视图控制器中,您可以做两件事,正如我已经说过的:
[self dismissViewControllerAnimated:YES
completion:^{
[self.firstVC someMethod];
}];
或者
问题是,我希望该方法在第一个UIViewController中执行,而不是在第二个UIViewController中执行。因此,第一个视图控制器在显示时是否传递了对第二个视图控制器的引用?我不确定我们是否相互理解,或者我问了一个错误的问题。第一个UIViewController加载,我单击一个按钮,使用模式segue第二个UIViewController显示,我单击第二个上的一个按钮,它将隐藏。当它隐藏并且第一个再次出现时,我想在第一个UIViewController中使用我想在它出现时立即触发的方法来更改某些内容。如果我不想在这两者之间更改任何信息,为什么还要传递对第二个的引用呢。或者我不明白你把引用传递给第二个控制器是什么意思。当第一个控制器呈现第二个控制器时,它可以把自己的引用传递给第二个控制器。第二个会一直保留这个引用,直到它隐藏为止,这时它会使用对第一个视图控制器的引用来调用第一个视图控制器上的方法。这听起来像是一个简单的解决方案,但我想这并不像听起来那么容易,我该怎么做呢,您不想再次显示第一个视图控制器吗?当然,我想再次显示第一个视图控制器,但当它显示时,我想在该第一个视图控制器中启动一个方法,因此我需要类似UIApplicationIDBecMeactiveNotification的内容,但要从模式segue返回。
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[self.firstVC someMethod];
}