使用另一个按钮执行与后退按钮相同的操作

时间:2014-04-01 17:26:05

标签: ios objective-c xcode

我现在拥有什么?

我有两个视图控制器(VCA和VCB)和一个导航控制器。 VCA可以推送到VC​​B,VCB可以通过按VCB导航栏中的返回按钮返回VCA。

我想做什么?

我想在VCB中添加另一个按钮来执行与导航栏中的后退按钮相同的操作,也就是当按下该按钮时,我应该回到VCA,我该怎么办?

我尝试了什么?

我尝试在VCB中添加一个按钮,控制器将一条线从按钮拖到VCA以便它们连接,但我发现每次从VCB返回时都会调用VCA的viewDidLoad方法,这不是我想要的是什么。

谢谢!

2 个答案:

答案 0 :(得分:1)

按下后退按钮弹出ViewController时触发的操作是:

popViewControllerAnimated:(BOOL)animated

那么你可以做些什么来创建一个按钮并将其添加到它:

UIButton *goBackButton = [[UIButton alloc] initWithFrame:CGRectMake(0,64,50,50)];
[goBackButton addTarget:self action:@selector(goBackAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:goBackButton];

现在你实际上必须实现goBackAction:

-(IBAction)goBackAction:(id)sender{
    [self.navigationController popViewControllerAnimated:YES];
}

您实际上可以将popViewControllerAnimated操作添加到按钮,例如:

[goBackButton addTarget:self.navigationController action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside];

问题是你无法将动画参数传递给该方法,这将导致它使用一些碰巧在该参数预期位于内存中的垃圾。结果将是pop有时被动画,有时则不是。

答案 1 :(得分:1)

你可以实现一些按钮(UIButton类的对象),例如:

UIButton *backButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
backButton.frame = CGRectMake(60.0f, 40.0f, 200.0f, 50.0f);
backButton.titleLabel.font = [UIFont boldSystemFontOfSize:28.0f];
backButton.titleLabel.shadowOffset = CGSizeMake (0.0f, 1.0f);
[backButton setTitle:@"Back" forState:UIControlStateNormal];
[backButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[backButton setTitleShadowColor:[UIColor lightGrayColor] forState:UIControlStateNormal];

[backButton addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:backButton];

此外,您还必须为按钮的操作定义相应的选择器:

- (void)goBack {
  [self.navigationController popViewControllerAnimated:YES];
}

现在,如果单击此按钮,您将转到上一个视图控制器。