【问题标题】:How to segue back from one view controller to another within a custom UIView?如何在自定义 UIView 中从一个视图控制器切换回另一个视图控制器?
【发布时间】:2016-03-31 18:26:02
【问题描述】:

我想从 ViewControllerTwo 转到 ViewControllerOne。我创建了一个负责执行此操作的按钮,但我的问题是该按钮是添加到 ViewControllerTwo 的自定义 UIView 类的一部分,该按钮不是 ViewControllerTwo 主视图的一部分。

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

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

当我这样做时,我得到一个错误:“performSegueWithIdentifier not a method of class”,这是有道理的。

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

【问题讨论】:

  • 我认为您需要详细说明您的问题。每个ViewController 类都有自己的UIView,那么当您说其中一个视图控制器具有自定义UIView 时,您是什么意思?你的意思是你有一个UIView 的子类作为属于其中一个控制器的UIView?您可能希望包含您的头文件,向我们展示什么代表什么,以及他们遵守什么协议。
  • 是的,我将 uiview 子类化并将其添加到控制器的 uiview 中。
  • 好吧,看起来你已经开始工作了!干得好。

标签: ios objective-c uiview segue


【解决方案1】:

我认为您可以对您的SecondViewController 进行委托回调,并在SecondViewController 的委托回调方法中实现performSegueWithIdentifier

是这样的:

在您的自定义 UIView 类接口之上创建这样的协议

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

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

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

在你的自定义 UIView *.m 中添加这个

-(void)buttonClicked{
    [self.delegate buttonDidTap];
 }

像这样使协议符合您的SecondViewController

@interface SecondViewController: UIViewController <CustomViewDelegate>

像这样在viewDidLoadMethod 中设置委托

-(void)viewDidLoad{
[super viewDidLoad];
self.yourCustomView.delegate = self;
}

在视图控制器 .m 文件中实现此方法

- (void)buttonDidTap{
[self.performSegueWithIdentifier: "ShowFirstViewController" sender:self];
}

我更像是一个敏捷的人,我认为这应该可以正常工作。

【讨论】:

  • 你能举个例子,因为我对写什么代码有点困惑
  • 我刚刚在这里编辑了我的答案,你可以通过它。
  • 好的,谢谢。只有一个问题。我不能声明财产:“委托”。我收到一条警告说“自动属性合成不会合成属性”委托“它将由其超类实现,使用 @dynamic 来确认意图”
  • 用这个代替弱属性:@property (__unsafe_unretained) id delegate;
【解决方案2】:

iOS 9.3、Xcode 7.3、ARC 已启用

这就是我要解决的问题:

第 1 步:确保您有一个正确的故事板标识符,用于您希望在它们之间切换的 视图控制器。视图只是附加到视图控制器,无论是否自定义。

为此,请转到“*.storyboard”显示实用程序(右窗格)并导航到身份检查器。确保在 Storyboard ID 字段中输入了“ShowFirstViewController”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2015-03-23
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多