Ios 如何在自定义UIView中从一个视图控制器切换回另一个视图控制器?
我想从ViewControllerTwo切换回ViewControllerOne。我创建了一个负责执行此操作的按钮,但我的问题是该按钮是添加到ViewControllerTwo的自定义UIView类的一部分,该按钮不是ViewControllerTwo主视图的一部分 因此,在自定义UIView类中,我有一个方法,该方法在单击按钮时会作出反应Ios 如何在自定义UIView中从一个视图控制器切换回另一个视图控制器?,ios,objective-c,uiview,segue,Ios,Objective C,Uiview,Segue,我想从ViewControllerTwo切换回ViewControllerOne。我创建了一个负责执行此操作的按钮,但我的问题是该按钮是添加到ViewControllerTwo的自定义UIView类的一部分,该按钮不是ViewControllerTwo主视图的一部分 因此,在自定义UIView类中,我有一个方法,该方法在单击按钮时会作出反应 -(void)buttonClicked{ [SecondViewController performSegueWithIdentifier: "S
-(void)buttonClicked{
[SecondViewController performSegueWithIdentifier: "ShowFirstViewController" sender:nil];
}
当我这样做时,我得到一个错误:“performsguewithidentifier不是类的方法”,这是有意义的
因此,如果负责segue的按钮实际上不是任何一个视图控制器的一部分,并且位于不同的类中,那么如何在两个视图控制器之间进行切换呢 我认为您可以让一个代理回调到您的
SecondViewController
,并在SecondViewController
中的代理回调方法中实现performsguewithidentifier
事情是这样的:
在自定义UIView类接口上方创建如下协议
@protocol CustomViewDelegate <NSObject>
- (void)buttonDidTap;
@end
@interface SecondViewController: UIViewController <CustomViewDelegate>
将协议与您的SecondViewController
一致,如下所示
@protocol CustomViewDelegate <NSObject>
- (void)buttonDidTap;
@end
@interface SecondViewController: UIViewController <CustomViewDelegate>
在view controller.m文件中实现此方法
- (void)buttonDidTap{
[self.performSegueWithIdentifier: "ShowFirstViewController" sender:self];
}
我是一个更敏捷的人,我认为这应该可以很好地工作。iOS 9.3,Xcode 7.3,ARC启用 这就是我要做的故障排除: 第1步:确保要在其中切换的视图控制器具有正确的情节提要标识符。视图只需附加到视图控制器(自定义或非自定义) 要执行此操作,请转到“*.storyboard”显示实用程序(右窗格)并导航到Identity Inspector。确保在情节提要ID字段中输入了“ShowFirstViewController”
你能给我举个例子吗?我对要写的代码有点困惑。我刚刚编辑了我的答案,你可以看一下。好的,谢谢。只有一个问题。我不能声明属性:“委托”。我收到一条警告:“自动属性合成不会合成属性”委托“它将由其超类实现,使用@dynamic来确认意图”使用此属性而不是弱属性:@property(\uuu safe\u unretained)id delegate;我认为你需要详细说明你的问题。每个
ViewController
类都有自己的UIView
,那么当您说其中一个视图控制器有一个自定义的UIView
时,您是什么意思?您的意思是说您有一个子类UIView
作为属于其中一个控制器的UIView
?你可能想包括你的头文件,向我们展示什么委托什么,以及他们遵守什么协议。是的,我对uiview进行了子类化,并将其添加到控制器的uiview中。没错,看起来你让它工作了!干得好。
- (void)buttonDidTap{
[self.performSegueWithIdentifier: "ShowFirstViewController" sender:self];
}