在“无关”类中设置委托

时间:2012-11-30 17:07:14

标签: ios delegation

我无法使用协议从其他类中获取某些数据。我无法看到如何在不偏离需要数据的MVC的类中设置委托。我在MVC中创建协议,并在包含我需要的数据的任意类中实现方法。但是如果没有对委托者MVC的引用,我就看不到如何引用回委托者MVC来设置委托,就像你使用segue.destinationViewController一样。

3 个答案:

答案 0 :(得分:1)

这样的东西?

@implementation MyViewController {
// keep a pointer to the data supplier class as long as this object exists
// so that it will continue to exist and send me delegate callbacks
SomeDataClass *myInstanceOfSomeDataClass; // instance variable to point to my data supplier
}

// ...

- (void)updateMyView {
    if (myInstanceOfSomeDataClass == NULL) // I haven't created an instance yet
        myInstanceOfSomeDataClass = [[SomeDataClass alloc] init];
    SomeType *results;
    if (instantResultsAreAvailable)
        results = [myInstanceOfSomeDataClass getResults];
    if (resultsAreOnlyAvailableFromDelegateCallback)
        myInstanceOfSomeDataClass.delegate = self;
}

- (void) delegateCallbackMethod {
//...
}
@end

答案 1 :(得分:1)

如果MyViewController可以创建SomeDataClass的实例,那么您可以在那里设置委托。如果控制器之间没有连接,那么您可以使用NSNotification。这是一种完全匿名的连接实例的方式 - 您发送通知,任何注册该通知的类都可以获得它。

答案 2 :(得分:0)

您想将数据从viewcontroller传递到另一个类吗?请完成此Passing Data between View Controllers