我正在做一个没有使用任何故事板和xib的ios项目。
在这里,我提出了UIViewController
的一个问题。
以下是senario:
我的RootViewController有两个UIButton's
,可以在按下时显示ViewControllerA
和ViewControllerB
。
-(IBAction)btnAclicked:(id)sender{
[self.navigationController presentViewController:ViewControllerA];
}
-(IBAction)btnBclicked:(id)sender{
[self.navigationController presentViewController:ViewControllerB];
}
现在在ViewControllerA
内
我也有一个presentViewContollerB
按钮,我只想在我解雇RootViewController
时显示ViewContollerB
。
为了做到这一点,我需要首先解除ViewControllerA
然后presentViewControllerB
。我知道有一些方法可以使用委托来使它工作,但我只是想知道是否有更简单的方法来做到这一点。
需要强调的是,我只想使用presentViewController
,而不是pushViewController
。感谢
答案 0 :(得分:0)
我有一个问题的答案,只需执行以下代码,
RootViewController.m中的
- (IBAction)gotoViewA:(id)sender
{
ViewControllerA *viewControllerA = [[ViewControllerA alloc]initWithNibName:@"ViewControllerA" bundle:nil];
[self presentViewController:viewControllerA animated:YES completion:nil];
}
- (IBAction)gotoViewB:(id)sender
{
ViewControllerB *viewControllerB = [[ViewControllerB alloc]initWithNibName:@"ViewControllerB" bundle:nil];
[self presentViewController:viewControllerB animated:YES completion:nil];
}
ViewControllerA.m中的
- (IBAction)actionBackFromA:(id)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
}
ViewControllerB.m中的
- (IBAction)actionBackFromB:(id)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
}
答案 1 :(得分:0)
使用presentviewcontroller的完成块,即先执行
[self presentViewController:goTo_B animated:YES completion:^{
//Dismiss A
[self dismissViewControllerAnimated:YES completion:nil];
}];
如果这不起作用,请在它出现新控制器后立即写入解除
[self dismissViewControllerAnimated:YES completion:nil];
[self.view.window.rootViewController presentViewController:goTo_B animated:YES completion:^{ }];
答案 2 :(得分:0)
还有另外一条出路,但我不知道它是否合适。
在视图控制器B中创建View Controller A类型的属性。 在呈现视图控制器B时,将视图控制器A的实例分配给视图控制器B中的属性。
[self presentViewController:goTo_B animated:YES completion:^{
goTo_B.propertyOfViewControllerA = self;
}];
在解雇视图控制器B之后,您可以执行以下任一操作:
[self dismissViewControllerAnimated:YES completion:nil];
[propertyOfViewControllerA dismissViewControllerAnimated:YES completion:nil]
或
[self dismissViewControllerAnimated:YES completion:^{
[propertyOfViewControllerA dismissViewControllerAnimated:YES completion:nil]
}];