我想在一个类中使用tapRecognizer检测点击,触发另一个类来创建第三个类的对象。
如何在不创建第二类新对象的情况下从点击检测类触发此方法?
或者是否可以创建第二类的新对象?但它会丢失所有旧数据。
如何完成这样的触发?我尝试了一些东西,但它刚刚警告过在类方法中访问一个对象。
e.g。
ViewController Class 1
+(void) setupClass2
{
Class2 class = .........
class.someValue = ......
self.navigationController pushViewController:class ......
}
// The calling/trigger class should be able to invoke the setupClass function e.g.
[Class1 setupClass];
这是如何正确完成的?
答案 0 :(得分:1)
您必须使用以下方法声明协议:
-(void) class1:(Class1*) c didReceivedTouch:(UITouch*) e; //or any other params that you need
然后指定一个符合该协议的委托(在您的情况下为第2类)。在该回调中创建第3类对象。
答案 1 :(得分:0)
使用Max
建议的方法声明协议@protocol UrProtocolName @需要/ @可选 - (void)class1:(Class1 *)c didReceivedTouch:(UITouch *)e; //或您需要的任何其他参数
@end
然后在第二堂课中实施协议
@interface 2ndClass< UrProtocolName>
.....
@end
@implementation 2ndClass
- (void)class1:(Class1 *)c didReceivedTouch:(UITouch *)e { 3rdClass class = ......... self.navigationController pushViewController:class animated:YES]; } @end
但是我真的不明白为什么你想要第二类,当你想要的只是创建3rdClass的对象并将其推送到navigationController。在构造2ndClass的对象时,您可以将2ndClass'对象作为firstClass的成员进行初始化,并且您可以在2ndClass中使用一个方法来简单地创建3rdClass的对象,并且可以多次调用此2ndClass对象的方法,直到你的firstClass对象在范围内。