使用ilustrated示例调用在UIViewcontroller中向AppDelegate声明的函数

时间:2014-04-11 21:05:35

标签: ios uiviewcontroller appdelegate

是否可以调用UiviewController上的函数来appdelegate 我使用的是一个Sdk,它包含一组可以进行子类化的自定义控制器和控制器

示例:

假设我们有2个viewcontrollers和appdelegate

viewController 1.h,它位于sdk中,可以是子类

    @interface FirstViewController : UIViewController
    @end

和第二个viewController 这是firstViewController的子类 例如:

 import# <customViewcontroller/customviewcontroller.h>
 @interface FirstViewController : FirstViewController

 @end

在custoviewcontroller中有一个名为的函数      - (无效)showChatForUserId(的NSString)用户id;

并在SecondViewcontroller.m中 如果我打电话

,我可以得到正确的结果
[self showChatForUserId:self.targetUserId];

并在Appdelegate中导入SecondViewController 我的问题是 我怎么可能使用函数[self showChatForUserId:] userId来自方法

中的appdelegate中的推送通知
  -(UIApplication)application didReceiveRemoteNotifications(NSDictionary *)userInfo
    {
      NSString userId = [userInfo valueForKey"uid"]; here comes the id which i can use in the showChatForUseId.
    }

如何通过在appdelegate中创建一些SecondViewController实例并获取

来调用此函数
 [self ShowChatForUserID:userId];
在appDelegate.m的didReceiveRemoteNotifications方法中

感谢在这种情况下可能提供帮助的任何人。 &LT; 3

1 个答案:

答案 0 :(得分:0)

这与今天早些时候提出的完全相同的问题有可疑的相似之处。

首先提出一些一般性的建议,坐下几个小时,阅读一本iOS书的第一章,因为你正在挣扎,甚至在得到你的问题的答案之后,你只是继续挣扎,不要放慢速度,并在你的腰带下获得一些基本的理解。

现在

[self ShowChatForUserID:userId];

不是函数,函数是ShowChatForUserID:。你知道自己意味着什么吗?

在可以在SecondViewController的实例上调用ShowChatForUserID之前 a)当调用didReceiveRemoteNotifications时,必须已经存在该类型的对象 b)程序的某些部分必须创建一个。

因此,某些对象必须先前已创建SecondViewController(SVC),或者现在某个对象必须创建一个。

哪个对象应该创建它无法回答,因为我们不知道应用程序的整体设计是什么或应该只提供所提供的信息。

应用程序有一个根视图控制器(RVC),根视图控制器可能一个SecondViewController,或者RVC可能会创建一个SVC,或者RVC可能会创建另一个VC,而VC应该负责用于创建SVC,或.....

应用程序代理应发布通知(使用NSNotificationCenter)通知某些内容推送已到达并将推送ID发送到某些内容

某些可能是SVC(如果它已经存在),或者它可能是RVC,或者它可能是另一个VC。 如果某事是SVC,那么它可以调用[self ShowChatForUserID:userId]; 如果某些不是SVC,那么它可能会创建SVC并使用userId对其进行初始化。

不可能说某些应该是什么,因为答案取决于你的应用程序应该如何设计和构建。

这是正确的答案,如果它不是一个简单的答案,你可以立即复制/粘贴到你的代码,然后抱歉让你失望。如果你不理解它,那么几个小时之后不要再发一个问题,希望得到另一个你可以复制/粘贴的答案。注意我在最顶层的书中所说的话。

如果有人给你一些快速的答案,你可以立即申请,他们的回答是快速黑客废话。

(如果RVC是SVC那么app委托可以直接调用该类的方法来告诉它显示用户id的聊天,或者如果RVC不是SVC那么它会仍然可以让app委托告诉它传递消息以向SVC显示聊天。但是在真实的应用程序中,RVC不会是SVC,并且RVC上传递方法的app委托调用方法不是好)。