2014-01-13 2 views
-1

필요하면 다른 클래스의 메서드를 호출하는 세 개의 UIViewController이 있습니다.다른 클래스의 메서드 호출 및 반환 값

이이라고하는 NSObject의 하위 클래스 인 Class은 서버에있는 데이터베이스에 연결하기 때문에 몇 초가 걸립니다.

내가 묻고 두 질문이 :

- FIRST : 나를 (나를 위해 나쁜 코드를) 공유 할 이제 서버에서 다시 나에게 배열을 얻기 위해, 거의 당황하는 방법을 사용, 그래서이 전화를 CheckController 호출하고 ViewController에서 호출이 시작된 값을 반환해야합니다.

- 두 번째 : 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

@downvoter 부정적 투표에 감사드립니다. 이제 부정적 투표에 참여하게되어서 기쁩니다. 이유를 설명해 주시겠습니까? :-) – Ilario

+0

데이터베이스와 인터페이스하기위한 클래스를 만들고 값이 업데이트되면 알림을 제공하는 대리자 메서드를 작성합니다. – sosborn

+0

@ sosborn 어떻게 표시 할 수 있습니까? CheckController는 NSObject의 하위 클래스이며이 연결을 만들기 위해 생성되었습니다. – Ilario

답변

1

명확하지 않은 경우 좋은 NSObject의 서브 클래스가 말해 :

CheckController의 코드 . 그러나 CheckController가 일부 데이터를받는 경우 델리게이트를 호출하는 프로토콜을 제공해야합니다. 그래서 당신의 ViewController에서

@protocol CheckControllerDelegate <NSObject> 
@required 
- (void)receivedArray:(NSArray*)data 
@end 

@property (nonatomic, weak) id <CheckControllerDelegate> delegate; 

당신의 CheckController.h의 :

[self.CheckController setDelegate:self]; 

CheckController.m : 또한 경우에 호출 될 것입니다 방법을 가지고 있어야 당신의 프로토콜을 연습 최선를 들어

-(void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    [_delegate receivedArray:myObject]; 
} 

오류가 발생합니다.

관련 문제