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