我在Xcode 5.1上运行。我正在开展一个学校项目,我们需要在application:didFinishLaunchingWithOptions:
中加载推文,之后我们需要在视图控制器上显示获取的数据。
我正在使用界面构建器,因为我觉得它更简单,所以要回答我的问题,请记住我正在寻找带有界面构建器的解决方案。
我的问题是:
application:didFinishLaunchingWithOptions:
AppDelegate
中的推文加载函数在一个单独的线程中运行。我知道如果您以编程方式在AppDelegate
中推送视图控制器,那么您可以在初始化视图控制器之前等待加载推文。但是,由于我使用的是界面构建器,因此即使在推文加载功能完成之前,视图控制器也始终在启动时初始化。因此,我正在为AppDelegate
中的函数寻找一种方法来通知故事板创建的视图控制器的实例,以便在下载所有必需的推文后重新加载其数据。
简单地说:
如何从AppDelegate
访问界面构建器创建的任何视图控制器的实例?这是正确的做法吗?
我搜索过很多解决方案,但所有这些解决方案都涉及创建一个新实例,这个实例与已在运行时创建的实例不同。
答案 0 :(得分:0)
如果您的UI元素已正确绑定到模型,则模型的更改应自动反映在视图中。
我不确定您正在使用的UI界面元素。我假设您有一个UITableViewController显示您的推文,并且您正在使用您的appDelegate作为UITVCDelegate,以便为其提供有关其UITableView中每个单元格的单元格数,尺寸和数据的信息。最后,您希望在完成提取推文后重新加载数据。
最简单的方法是在tableView上调用[tableView reloadData]
(您可以从UITVC访问它)。但是,这只是基于我对您使用UITableView显示推文的假设是正确的。
干杯!
答案 1 :(得分:0)
我认为您正在寻找的是以下内容:
我会为此做的是:
不要在完成启动中获取数据 使用'rootViewController`属性获取viewcontroller的实例:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
MYVIEWCONTROLLER *controller = (MY_ROOT_VIEW_CONTROLLER *)self.window.rootViewController;
[controller triggerFetch];
...
return YES;
}
在triggerFetch
中,您将创建向主视图添加UIActivityIndicator
或进度条,并为fetch函数添加回调。提取完成后,您将删除加载视图并显示提取的内容。