【问题标题】:How to pass data from AppDelegate to ViewController?如何将数据从 AppDelegate 传递到 ViewController?
【发布时间】:2012-12-03 05:18:54
【问题描述】:

我正在使用 Safari 浏览网页。单击此页面上的按钮后,我的 Ipad 将启动我的应用程序。所以我在AppDelegate.m中实现了方法- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
    if (!url) {  return NO; }   
    NSString *URLString = [url absoluteString];
    self.paramArray = [URLString componentsSeparatedByString:@"@"];
    NSLog(@"%d",[self.paramArray count]);
    for (int i = 1; i < [self.paramArray count]; i++) {
        NSLog([self.paramArray objectAtIndex:i]);
    }
    return YES;
}

我在网页上使用的 url 类似于 myapp://@first_part@second_part@third_partself.paramArray存储url的子串(myapp://first_partsecond_partthird_part)。

现在我想在我的ViewController 的文本字段中显示这些字符串。如何将此 NSArray 传递给ViewController

【问题讨论】:

    标签: ios uiviewcontroller appdelegate


    【解决方案1】:

    这只是完成它所需的几行代码。

    将此行放入 appDelegate.h 文件中

    首先你需要遵守如下协议

    @interface AppDelegate : UIResponder <UIApplicationDelegate>
    

    现在需要声明一个属性供它使用,如下所示

    @property (strong, nonatomic) id<UIApplicationDelegate>delagete;
    

    现在在视图控制器中使用该属性的最后一个阶段如下

    在视图控制器的.h文件中
    首先引用 appdelegate 像这样#import "AppDelegate.h"
    然后在@interfaceAppDelegate *appDel; 中添加一个 iVar

    现在在 .m 文件中
    appDel = [[UIApplication sharedApplication]delegate]; 放在视图中确实加载方法并访问appdelegate 的所有属性,如appDel.paramArray

    快乐编码:)

    【讨论】:

    • 你能给我更多的细节吗?比如我应该在哪里添加这些行?
    • 这样可以吗?或需要更多信息? :)
    • 我按照你说的做了。但是我的viewDidLoad 方法中的[appDel.paramArray count] 返回0。什么时候会调用- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
    • paramArray 是不是在 appDelegate.h 文件中声明的(强、非原子)属性之一?
    • 在视图加载并处于出现状态后,即在 viewDidAppear 中,我认为方法将非常适合这个:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2020-10-01
    • 2017-02-22
    • 1970-01-01
    相关资源
    最近更新 更多