iOS 中的基本表格程序 - 如何告诉我的表格从应用程序委托重新加载数据?

Posted

技术标签:

【中文标题】iOS 中的基本表格程序 - 如何告诉我的表格从应用程序委托重新加载数据?【英文标题】:Basic table program in iOS - How can I tell my table to reload data from the application delegate? 【发布时间】:2012-02-07 20:50:38 【问题描述】:

我现在已经构建了您的标准表格应用程序。 Window 有一个 UINavigationController 作为它的 rootViewController,并且这个 UINavigationController 是用它的 rootViewController 作为我的自定义 UITableController 初始化的。

我的应用程序表数据随时间而变化。如果我从挂起状态打开我的应用程序,那么我的数据是陈旧的。如何让 applicationWillEnterForeground 更新我的数据?我尝试了一些尴尬的事情,比如

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    HabitsTable* vc = [[HabitsTable alloc] init];
    [vc initCoreData];
    UINavigationController* nav = [[UINavigationController alloc]      initWithRootViewController:vc];
    self.window.rootViewController = nav;
    [self.window makeKeyAndVisible];
    return YES;


- (void)applicationWillEnterForeground:(UIApplication *)application

        [[[[self window] rootViewController] navigationController] rootViewController]

但是,毫不奇怪,这行不通。我不确定如何访问我的 UITableController?

【问题讨论】:

【参考方案1】:

我建议使用NSNotificationCenter。你可以看到一个很好的例子来说明如何使用 here 类。

【讨论】:

伙计,这很有帮助。了解 NSNotificationCenter 可能会让我现在重构整个应用程序。谢谢!【参考方案2】:

我相信你的仔细尝试:

UINavigationController *navController = (UINavigationController*)[[self window] rootViewController];
HabitsTable *tableView = (HabitsTable*)[navController topViewController];

【讨论】:

啊,topViewController。这很可能是我正在寻找的。我想我会改用 NSNotificationCenter,因为这可能会减少代码重复。

以上是关于iOS 中的基本表格程序 - 如何告诉我的表格从应用程序委托重新加载数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何让我在 xcode 4.6 ios6 中的表格视图正常工作?

使用 iOS 5 自定义应用程序中的所有表格视图

删除表格视图中第一行顶部的空格

根据iOS中的UIWebView内容计算表格单元格高度?

本地保存数据(IOS)

单击表格视图单元格时启动默认电子邮件应用程序 - IOS