我在 ViewController2 中有一个 backbarButtonItem,当屏幕返回其父视图控制器 ViewController1 时,我想询问用户是否准备好返回。如果他还没有准备好,我想给他一个留在 ViewController 中的选项。所以问类似 - “你准备好离开这个屏幕了吗? - 是或否”
我知道 backbarButtonItem 不能调用 Apple 文档中定义的“动作”。你有什么好的解决办法吗?
我会将您自己的自定义 leftBarButtonItem 添加到导航项,并添加您想要的任何操作方法。它的外观与标准后退按钮不同,但我认为这是一件好事——用户希望标准按钮具有标准行为。使用常规的矩形按钮会提醒用户正在发生不同的事情。
在视图中的 didLoad 方法中写入:
UIImage* myimage = [UIImage imageNamed:@"ButtonImage.png"];
CGRect backFrame = CGRectMake(0, 0, 80, 30);
backButton = [[UIButton alloc] initWithFrame:backFrame];
[backButton setBackgroundImage:myimage forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(MyBtnclicked)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *btn = [[UIBarButtonItem alloc]initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = btn;
然后编写ibaction如下
-(IBAction)MyBtnclicked
{
UIAlertView *av=[[UIAlertView alloc] initWithTitle:nil message:@"Do you really want to Go back" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes",nil];
[av show];
}
一种方法是对UINavigationController
对象进行子类化并覆盖该popViewController:animated:
方法。然后,您可以根据用户的响应来决定是否调用 super 的popViewController:animated:
。