后退按钮无响应?

时间:2013-07-16 11:40:09

标签: ios objective-c ios6 uinavigationcontroller uibutton

我是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 个答案:

答案 0 :(得分:2)

如果您的viewcontroller不是rootviewcontroller的{​​{1}},则方法uinavigationcontroller将不起作用。因此,您需要设置popViewControllerAnimated才能推送/弹出uinavigationcontroller

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

答案 1 :(得分:2)

您没有将视图控制器显示为导航堆栈的一部分,因此使用popViewControlleranimated:无效。

您需要使用

[self dismissViewControllerAnimated:YES completion:NULL];

代替。

答案 2 :(得分:1)

使用此代码:

 [self dismissViewControllerAnimated:YES completion:NULL]

答案 3 :(得分:1)

推送(通过pushViewController或storyboard push segue)需要拨打popViewController

展示的视图(通过presentVewController或故事板模式segue)需要dismissViewController来电。