我现在拥有什么?
我有两个视图控制器(VCA和VCB)和一个导航控制器。 VCA可以推送到VCB,VCB可以通过按VCB导航栏中的返回按钮返回VCA。
我想做什么?
我想在VCB中添加另一个按钮来执行与导航栏中的后退按钮相同的操作,也就是当按下该按钮时,我应该回到VCA,我该怎么办?
我尝试了什么?
我尝试在VCB中添加一个按钮,控制器将一条线从按钮拖到VCA以便它们连接,但我发现每次从VCB返回时都会调用VCA的viewDidLoad
方法,这不是我想要的是什么。
谢谢!
答案 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];
}
现在,如果单击此按钮,您将转到上一个视图控制器。