我在iphone应用程序中有两个视图控制器。
1。)FirstVC
2。)SecondVC
在我的FirstVC中我有一个按钮。通过点击该按钮,我在presentModalViewController
中打开了SecondVC。看下面的代码。
- (IBAction)buttonClicked:(id)sender
{
SecondVC *secondVC = [SecondVC alloc] initWithNibName:@"SecondVC" bundle:nil];
[self.navigationController presentModalViewController:secondVC animated:YES];
}
现在转移到SecondVC。在SecondVC上,我创建了导航栏以及“取消”按钮作为leftBarButtonItem。我在取消按钮上设置了一个单击按钮的事件。在那种方法中,我想解雇SecondVC。波纹管方法在SecondVC中。看下面的代码。
- (void)cancelButtonClicked
{
[self dismissModalViewControllerAnimated:YES];
}
这段代码不起作用。我无法通过此代码解雇SecondVC。请提出其他技巧。
答案 0 :(得分:5)
将按钮代码更改为此..
- (IBAction)buttonClicked:(id)sender
{
SecondVC *secondVC = [SecondVC alloc] initWithNibName:@"SecondVC" bundle:nil];
[self presentViewController:secondVC animated:YES completion:NULL];
}
on cancelButtonClick
-(void)cancelButtonClicked {
[self.presentingViewController dismissViewControllerAnimated:YES completion:NULL];
}
答案 1 :(得分:3)
您正在将dismissModalViewControllerAnimated:
消息发送到错误的对象。
由于您通过导航控制器呈现了模态视图控制器,因此您应该调用:
[self.presentingViewController dismissModalViewControllerAnimated:YES];
这适用于iOS 5及更高版本。如果您只针对iOS 5及更新版本,您还可以考虑使用其上可用的较新方法来管理模态视图控制器:
– presentViewController:animated:completion:
– dismissViewControllerAnimated:completion:
但我不认为这是强制性的。
如果您想支持iOS 4及更早版本,则应向模态视图控制器添加属性:
@interface SecondVC : UIViewController
@property (nonatomic, weak/assign) UIViewController* presentingController;
...
@end
并在模态显示控制器之前设置它:
- (IBAction)buttonClicked:(id)sender
{
SecondVC *secondVC = [SecondVC alloc] initWithNibName:@"SecondVC" bundle:nil];
secondVC.presentingController = self.navigationController;
[self.navigationController presentModalViewController:secondVC animated:YES];
}
然后你会用:
[self.presentingController dismissModalViewControllerAnimated:YES];
答案 2 :(得分:0)
尝试使用当前的第二个VC ......
[self presentModalViewController:secondVC animated:YES];
答案 3 :(得分:0)
请使用以下代码替换您的代码
- (IBAction)buttonClicked:(id)sender
{
SecondVC *secondVC = [SecondVC alloc] initWithNibName:@"SecondVC" bundle:nil];
[self presentModalViewController:secondVC animated:YES];
}
- (void)cancelButtonClicked
{
[self dismissModalViewControllerAnimated:YES];
}