1

我是 iOS 开发的新手,目前坚持创建后退按钮。我已经在点击按钮上放置了 popViewControllerAnimated方法,我也在调试模式下对其进行了测试,并且后退按钮方法正在调用但popViewControllerAnimated不起作用。

这是代码。

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake((self.view.frame.size.height-100), 30, 80, 20)];
    [backButton setTitle:@"Back" forState:UIControlStateNormal];
    [backButton addTarget:self action:@selector(BackButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:backButton];

    //some piece of code...

}//end of viewDidLoad method


-(void)BackButtonClicked: (id)sender{  
    [self.navigationController popViewControllerAnimated:YES];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"testing" message:@"some message" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:@"NO", nil];
    [alert show];

}

在点击返回按钮时,此警报会显示,但屏幕不会返回。

任何有关此问题的帮助都将不胜感激。

我通过在我以前的 viewController 中编写这段代码来调用这个 viewController

PlaceTranslatedDetailsViewController *secondViewController =
[self.storyboard instantiateViewControllerWithIdentifier:@"placeTranslatedDetail"];
[self presentViewController:secondViewController animated:YES completion:NULL];

然而,这个 viewController 和之前的 viewController 是通过编程设计的

4

4 回答 4

2

如果您viewcontroller不是rootviewcontrollerfor a uinavigationcontroller,则该方法popViewControllerAnimated将不起作用。因此,您需要有一个uinavigationcontrollerback 才能推送/弹出viewcontroller.

因此,在您的情况下,您必须使用[self dismissViewControllerAnimated:YES completion:nil];,而不是popViewController因为您以模态方式呈现了一个视图控制器。

于 2013-07-16T11:44:53.890 回答
2

您没有将视图控制器作为导航堆栈的一部分呈现,因此使用popViewControlleranimated:不起作用。

你需要使用

[self dismissViewControllerAnimated:YES completion:NULL];

反而。

于 2013-07-16T11:53:08.393 回答
1

使用此代码:

 [self dismissViewControllerAnimated:YES completion:NULL]
于 2013-07-16T11:48:44.677 回答
1

推送(通过pushViewController或故事板推送segue)将需要调用popViewController

呈现的视图(通过presentVewController或故事板模态 segue)需要dismissViewController调用。

于 2013-07-16T11:56:18.047 回答