3

我在 iphone 应用程序中有两个视图控制器。

1.) 第一VC

2.) 第二VC

在我的 FirstVC 中,我有一个按钮。通过点击该按钮,我在presentModalViewController. 看下面的代码。

- (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。请提出其他技巧。

4

4 回答 4

5

将按钮代码更改为此..

- (IBAction)buttonClicked:(id)sender
{
    SecondVC *secondVC = [SecondVC alloc] initWithNibName:@"SecondVC" bundle:nil];
 [self presentViewController:secondVC animated:YES completion:NULL];

}

在取消按钮点击

-(void)cancelButtonClicked {
 [self.presentingViewController dismissViewControllerAnimated:YES completion:NULL];

}
于 2012-10-30T12:17:14.603 回答
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];
于 2012-10-30T12:16:28.877 回答
0

请用以下代码替换您的代码...代码

- (IBAction)buttonClicked:(id)sender
{
    SecondVC *secondVC = [SecondVC alloc] initWithNibName:@"SecondVC" bundle:nil];
    [self presentModalViewController:secondVC animated:YES];
}

- (void)cancelButtonClicked
{
   [self dismissModalViewControllerAnimated:YES];
}
于 2012-10-30T13:47:53.867 回答
0

现在试试这个 secondVC ......

[self presentModalViewController:secondVC animated:YES];
于 2012-10-30T12:16:39.597 回答