Obj中的触发方法

时间:2011-02-24 09:03:16

标签: iphone

我想在一个类中使用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];

这是如何正确完成的?

2 个答案:

答案 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对象在范围内。