我有三个UIViewController
在需要时调用另一个类中的方法。
NSObject的第四个Class
子类,我将其称为CheckController
,它与服务器上的数据库建立连接,这样做需要几秒钟。
我有两个问题要问:
- 第一次:现在从服务器回到我的阵列,使用几乎让我感到尴尬的方法(对我来说代码不好),
所以我需要知道如何调用此CheckController
并返回发起呼叫的ViewController
中的值。
- SECOND :我如何知道CheckController
,从哪个UIViewController调用该方法?
这是CheckController
的代码:
-(void)connectionWithString:(NSString *)string {
//connection with server - work well
}
...
-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
...
[self returnArray:myObject];
}
-(void)returnArray:(NSMutableArray *)arrayReturn {
//in this method i set the BOOL done to YES, but i believe that is it possible to
//send directly this arrayReturn to ViewController that invoked this method
done = YES;
NSLog(@"arrayReturn = %@", arrayReturn);
}
事先感谢您的帮助,并告诉我是否有不明确的事情
答案 0 :(得分:1)
正如您已经提到的,您的Class是NSObject的子类,这很好。但是如果CheckController收到一些数据,你应该提供一个调用委托的协议。所以在你的CheckController.h中
@protocol CheckControllerDelegate <NSObject>
@required
- (void)receivedArray:(NSArray*)data
@end
@property (nonatomic, weak) id <CheckControllerDelegate> delegate;
在ViewController中:
[self.CheckController setDelegate:self];
CheckController.m:
-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
[_delegate receivedArray:myObject];
}
为了获得最佳实践,您的协议还应该有一个方法,如果发生错误就会调用该方法。