2014-02-09 7 views
-2

델리게이트를 사용하여 몇 가지 메소드를 실행합니다.하나의 클래스의 2 명의 대표자

나는 두 명의 대표자 인 menuVC와 mapVC와 함께 클래스 webrequests를 얻었습니다.

mapVC webrequests에서 mapVC 클래스의 대리자 메소드를 수행 할 때.

내가 menuVC에서 webrequests를 할 때 mapVC 클래스의 델리게이트 메소드와 크래시 된 앱을 수행하려고 시도합니다. webrequests에서

방법은 그런 일이 왜

  if ([self.delegate isKindOfClass: [MenuViewController class]]) 
      { 
       self.delegate = [MapViewController class]; 
      } 

을 할 수 있습니까?

나는 두 클래스에서 사용

 self.webRequests = [WebRequests sharedInstance]; 
     self.webRequests.delegate = self; 
+3

여기에 몇 가지 심각한 오해가 있습니다. –

+1

그들이 있습니까? – user3281285

답변

2

원래 답 : 객체가 다른 대의원 수 있도록 설계된 경우를 제외하고는, 한 번에 객체 중 하나 대리자를 가질 수

프로토콜 (예 : UITableView에는 "delegate"및 "datasource"이 모두 있습니다).

또한 는이 라인에서 무엇을하고 있는지와 같은 비 인스턴스화 된 객체에 대한 당신의 대리자를 설정하지

self.delegate = [MapViewController class]; 

이 실제 할당 및 인스턴스 객체가 될 필요가있다.

방금 ​​작성하거나 푸시 한 "self.mapViewController"과 같습니다.

이 질문에 대해서는 현재 대리인이 MenuViewController 개체 인 것처럼 보이고 위임자를 MapViewController 개체로 전환하려고 시도하기 때문에 궁극적으로 무엇을 하려는지 더 자세히 설명해야합니다.

새로운 답 : 당신이 일이 두 개의 서로 다른 뷰 컨트롤러에서 발생하는 원하기 때문에

이, 가장 좋은 방법은 당신이 원하는 일을 할 수있는 여러 개체가 관찰 할 수는 "NSNotification"(이 사용입니다 - 또는 일어나는 일에 대해).

Here is a tutorial you can look at, to get a good start with it.

+0

오케이, 여기서 무엇을 사용해야합니까? NSNotification 또는 다른 무엇입니까? – user3281285

+0

위와 같은 방법으로 대리인을 전환하여 수행하려는 작업이 확실하지 않습니다. –

+1

나는 2 개의 viewControllers에서 내 webrequest run 메쏘드를 가지고 싶다. – user3281285