gpt4 book ai didi

ios - 当点击带有手势的 subview 时,如何切换到另一个 View Controller ?

转载 作者:行者123 更新时间:2023-11-29 02:09:02 25 4
gpt4 key购买 nike

我有一个带有 subview 的 View Controller :gestureView, View Controller 通过 socket 引用它。我已将父 View Controller 的 viewDidLoad 中的点击手势分配给gestureView,如下所示:

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self.gestureView action:@selector(handleTap)];
[self.gestureView addGestureRecognizer:tapGesture];

gestureView 使用一个自定义类,其中实现了handleTap:并且工作正常,我可以从gestureView的handleTap:记录日志,但是当点击gestureView时如何执行从当前 View Controller 到另一个 View Controller 的segue。

我知道可能有更简单的方法可以做到这一点,但这最适合我的情况。

最佳答案

您可以使用委托(delegate)模式或通知模式。两者都适用于您的情况,当 -handleTap() 方法在您的 subview 中实现时,您可以在您的 subview 类中创建协议(protocol)。当您获得handleTap方法时,您可以调用应该在父类中实现的委托(delegate)方法。

在 subview 类中在类声明之上定义协议(protocol)

@protocol SubViewClassDelegate <NSObject>
@required;
- (void) subviewDidTapped:(id) sender;
@end

定义委托(delegate)的属性。

@property (nonatomic, unsafe_unretained) id<SubViewClassDelegate> delegate;

在 subview 类的实现文件中调用委托(delegate)方法。

- (void) handleTap   {
if ([self.delegate respondsToSelector:@selector(subviewDidTapped:)]) {
[self.delegate subviewDidTapped:yourObject]; // in yourObject you can pass data if require.
}
}

在你的父类中实现了 subview 类的委托(delegate)

@interface ParentViewController : UIViewController <SubViewClassDelegate>

viewDidLoad

self.gestureView.delegate = self;

并在Parent Controller 中实现Subview类的委托(delegate)方法。

-(void) subviewDidTapped:(id)sender {

// Navigate using performSegueWithIdentifier:
[self performSegueWithIdentifier: @"segueIdentifier" sender: self];
}

关于ios - 当点击带有手势的 subview 时,如何切换到另一个 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29483965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com