Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用另一个按钮执行与后退按钮相同的操作_Ios_Objective C_Xcode - Fatal编程技术网

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

Ios 使用另一个按钮执行与后退按钮相同的操作,ios,objective-c,xcode,Ios,Objective C,Xcode,我现在有什么? 我有两个视图控制器(VCA和VCB)和一个导航控制器。VCA可以按下VCB导航栏上的“后退”按钮,VCB可以返回VCA 我想做什么? 我想在VCB中添加另一个按钮,以执行与导航栏中的“后退”按钮相同的操作,即当该按钮被按下时,我应该被引导回VCA,我该如何操作 我试过什么? 我试图在VCB中添加一个按钮,然后控制器将一条线从按钮拖到VCA,这样它们就可以连接起来,但我发现每次我从VCB返回时都会调用VCA的viewDidLoad方法,这不是我想要的 谢谢 按下后退按钮弹出View

我现在有什么?

我有两个视图控制器(VCA和VCB)和一个导航控制器。VCA可以按下VCB导航栏上的“后退”按钮,VCB可以返回VCA

我想做什么?

我想在VCB中添加另一个按钮,以执行与导航栏中的“后退”按钮相同的操作,即当该按钮被按下时,我应该被引导回VCA,我该如何操作

我试过什么?

我试图在VCB中添加一个按钮,然后控制器将一条线从按钮拖到VCA,这样它们就可以连接起来,但我发现每次我从VCB返回时都会调用VCA的
viewDidLoad
方法,这不是我想要的


谢谢

按下后退按钮弹出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];
}
实际上,您可以将PopViewControllerInitiated操作添加到按钮,如:

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

问题是您无法将已设置动画的参数传递给该方法,这将导致该方法使用某些垃圾,而这些垃圾恰好是该参数在内存中的预期位置。结果是弹出窗口有时会被设置动画,有时则不会。您可以实现一些按钮(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];
}

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

应该是[self.navigationController popViewControllerAnimated:YES],如果您只想弹出到上一个VC,而不是返回到根VCOh,对不起-您完全正确!这只是“复制粘贴问题”,现在我编辑前面的消息以获得正确的代码。非常感谢。我的答案先得到。更好地解释了为popViewControllerAnimated使用包装器方法的必要性,但这个方法被选为正确的…UIButton*backButton=[[UIButton alloc]initWithFrame:CGRectMake(0,0,26,26)];[backButton setImage:[UIImage ImageName:@“button01.jpg”]用于状态:UIControlStateNormal];[backButton设置Showstouch when highlighted:TRUE];[backButton addTarget:self action:@selector(popViewControllerWithAnimation)for ControlEvents:UIControlEventTouchDown]-(void)popViewControllerWithAnimation{[self.navigationController popViewControllerAnimated:YES];}并将“后退”按钮设置在任何需要设置的位置,该按钮可能与