我是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是以编程方式设计的
答案 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
来电。