一个班级的2名代表

时间:2014-02-09 03:01:42

标签: iphone objective-c xcode uiviewcontroller

我使用委托来运行一些方法。

我收到了2位代表的webrequests:menuVC和mapVC。

当我在mapVC webrequests中完成mapVC类的委托方法时。

当我在menuVC webrequests中尝试完成mapVC类和崩溃app的委托方法时。

webrequests中的方法没有帮助

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

为什么会这样?

我在两个班级中使用

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

1 个答案:

答案 0 :(得分: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