如何在自定义UIView中从一个视图控制器转换回另一个视图控制器?

时间:2016-03-31 18:26:02

标签: ios objective-c uiview segue

我想从ViewControllerTwo回到ViewControllerOne。我创建了一个负责这样做的按钮,但我的问题是该按钮是添加到ViewControllerTwo的自定义UIView类的一部分,该按钮不是ViewControllerTwo主视图的一部分。

所以在自定义UIView类中,我有一个方法,如果点击按钮就会做出反应......

-(void)buttonClicked{
    [SecondViewController performSegueWithIdentifier: "ShowFirstViewController" sender:nil];
 }

当我这样做时,我得到一个错误:" performSegueWithIdentifier不是类的方法"这是有道理的。

那么我如何在两个视图控制器之间进行切换,其中负责segue的按钮实际上不是视图控制器的一部分,而是在另一个类中。

2 个答案:

答案 0 :(得分:1)

我认为您可以让代理人回复require 'observer'并在SecondViewController中的委托回调方法中实施performSegueWithIdentifier

它是这样的:

在您的自定义UIView类接口上方创建一个像这样的协议

SecondViewController

然后在界面中创建一个属性

@protocol CustomViewDelegate <NSObject>
- (void)buttonDidTap;
@end

在您的自定义UIView * .m中添加此

@property (nonatomic, weak) id <CustomViewDelegate> delegate;

使协议符合-(void)buttonClicked{ [self.delegate buttonDidTap]; } 这样的

SecondViewController

@interface SecondViewController: UIViewController <CustomViewDelegate> 中设置代理

viewDidLoadMethod

在视图控制器.m文件

中实现此方法
-(void)viewDidLoad{
[super viewDidLoad];
self.yourCustomView.delegate = self;
}

我更多的是一个快速的人,我认为这应该可以正常工作。

答案 1 :(得分:0)

iOS 9.3,Xcode 7.3,启用ARC

这就是我要解决的问题:

第1步:确保您希望在视图控制器之间拥有正确的故事板标识符。视图只是附加到视图控制器,自定义与否。

要执行此操作,请转到“* .storyboard”,显示“实用工具”(右窗格)并导航到Identity Inspector。确保在Storyboard ID字段中输入“ShowFirstViewController”。

enter image description here