gpt4 book ai didi

ios - 如何从 View 中显示 View Controller ?

转载 作者:行者123 更新时间:2023-11-28 19:46:56 26 4
gpt4 key购买 nike

我搜索了类似 Get to UIViewController from UIView? 的答案和其他几个答案,但没有成功。

我的问题是我在 UIView 中有一个按钮让我们说 class1 当我点击那个按钮时我想加载另一个 View class2 这是 UIViewController,因为我没有在 class1 中得到 navigationController,所以我无法加载 class2查看。

请帮我解决这个问题。

谢谢,提前。

最佳答案

一般来说,UIViews 不应包含任何触发应用程序流程的逻辑。这是 UIViewControllers 的工作。它只是一种使代码设计更好、更有条理的方法。

我经常使用的一种方法是在我的自定义 UIView 中使用 delegate 模式。这是简单的设置:

在您的 MyCustomView .h 文件中:

@class MyCustomView;

@protocol MyCustomViewDelegate <NSObject>
@optional
- (void)myViewDidTapOnButton:(MyCustomView)myCustomView;
@end


@interface MyCustomView : UIView

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

@end

在您的 MyCustomView .m 文件中:

- (IBAction)didTapMyButton:(id)sender {

if ([self.delegate respondsToSelector:@selector(myViewDidTapOnButton:)]) {
[self.delegate myViewDidTapOnButton:self];
}
}

然后在呈现您的 View 的 View Controller 中:

界面:

@interface MyViewController ()<MyCustomViewDelegate>

@property (weak, nonatomic) IBOutlet UIView *myCustomView;

和实现:

- (void)viewDidLoad {
[super viewDidLoad];

self.myCustomView.delegate = self;
}

- (void)myViewDidTapOnButton:(MyCustomView)myCustomView {
... code for presenting viewcontroller ...
}

注意:即使您不使用此方法中发送的参数 myCustomView,始终将委托(delegate)的 sender 作为第一个参数发送也是一个常见的模式和好习惯。

这也被 Apple 大量使用,例如在

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

关于ios - 如何从 View 中显示 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31586371/

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