0

我的代码 UIViewController 正在实例化一个对象\类,它是一个 UIView,它有一个框架,我画了一个实心圆圈等。我向第二类框架添加了一个手势,当点击发生时我想关闭\释放第二类和触发写在第一个对象中的一些方法(在 UIViewController 中)。现在第二个班级识别水龙头,但我不知道如何从内部释放班级并告诉第一个班级做某事(调用一个方法)?

希望这很清楚,知道该怎么做吗?

谢谢

4

1 回答 1

0

在我看来,最简单的方法是为第二类创建一个代表。例如,我们只假设有 FirstClass 和 SecondClass,每个都有自己的文件。

在 FirstClass 中,当您设置其 SecondClass 的实例(实例化 UIView)时,您将拥有如下内容:

SecondClass *class2 = [[SecondClass alloc] init....];
// set up the delegate, which basically creates a link between SecondClass and FirstClass;
class2.delegate = self;

在 SecondClass.h 中,您需要设置如下内容:

@property (nonatomic, strong) id delegate;

在 SecondClass.m 中,您将获得委托的综合值以及手势处理方法:

// add the FirstClass header file;
#import "FirstClass.h"

// synthesize the value;
@synthesize delegate;

// later on into the implementation file;
- (void)gestureHandlingMethod:(UIGestureRecognizer *)gesture {
    // do whatever you need for the gesture in SecondClass;
    // send a message to FirstClass (now defined as delegate of SecondClass);
    [self.delegate handleGesture:gesture forClass:self];
}

最后,您需要将此手势处理方法添加到 FirstClass,以便它完成您需要的操作。因此,在 FirstClass.h 中,添加-(void)handleGesture:(UIGestureRecognizer *)gesture forClass:(id)secondClass;. 然后通过将此方法添加到 FirstClass.m 来完成,如下所示:

- (void)handleGesture:(UIGestureRecognizer *)gesture forClass:(id)secondClass {
    // do what you want here from within the FirstClass;
    [self doSomethingWithGestureIfYouWant:gesture];
    // then deallocate SecondClass if that's what you want to do;
    [secondClass dealloc]; // you may need to specify [(SecondClass *)secondClass dealloc];
}

那应该这样做。这只是将不同文件链接在一起的一种不错的小方法。希望这可以帮助你。

于 2012-06-22T00:40:31.887 回答