gpt4 book ai didi

ios - 创建一个类来获取所有按钮委托(delegate)

转载 作者:行者123 更新时间:2023-11-28 21:58:03 24 4
gpt4 key购买 nike

我有一个名为 classAUIViewController 类。此类连接到其连接 View (来自 Storyboard)的 buttons 导出。

我想做的是创建另一个 classB ,它将处理所有按钮操作。我的问题是,如何将 classA 中的按钮委托(delegate)设置为在 classB 中处理,以及如何使 classB 生效一直以来。

我在想这个。

在 classA 中:(具有按钮 socket 的主视图 Controller )

ClassB *buttonsResponder=[[classB alloc]init]; //initialize buttons class
[self.button addTarget:buttonsResponder action:@selector(do:) forControlEvents:UIControlEventTouchDown];

我的主要问题是,当 classB 处理操作时,假设他必须打开一些邮件编辑器 View Controller ,classB 如何打开“内部”classA View 的邮件编辑器?甚至一些我想在 classA 中显示的 UIView,但是 from classB

我正在考虑将指向当前 View Controller 的指针作为按钮的参数发送,但我不知道该怎么做,也不知道它是否有效:

[self.button addTarget:buttonsResponder action:@selector(do:and controller pointer?) forControlEvents:UIControlEventTouchDown];

最佳答案

让 ClassB 在 ClassA 实例中保持事件状态的最佳方法是使其成为类扩展中的私有(private)属性:

// In CalssA
@property (nonatomic, strong) ClassB *buttonsResponder;

你需要在某个地方分配它,viewDidLoad 是个好地方:

self.buttonsResponder = [[classB alloc]init];

并且在相同的方法中,您可以将其设为按钮委托(delegate):

[self.button addTarget:self.buttonsResponder action:@selector(do:) forControlEvents:UIControlEventTouchDown];

//扩展

如果你想从你的 ClassB 中呈现另一个 View Controller ,你可以创建属性来保存对 classB 中的 classA 的弱引用:

// In ClassB.h
@property (nonatomic, weak) ClassA *myClassA;

在 viewDidLoad 中初始化 classB 时传递对 classA 的引用:

// In ClassA.m
self.buttonsResponder = [[classB alloc]init];
self.buttonsResponder.myClassA = self;

当你想呈现另一个 View Controller 时,你可以从类 B 中进行:

[self.myClassA presentViewController:...];

关于ios - 创建一个类来获取所有按钮委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25887003/

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