2014-02-09 18 views
-2

我使用委託來運行一些方法。一個類的2個代表

我得到了2個代表的類webRequests:menuVC和mapVC。

當我在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

我想讓我的webrequest運行2個viewControllers的方法 – user3281285