在加载数据之前阻止视图作为模态视图打开

时间:2012-06-28 10:09:16

标签: ios view modal-dialog

我想知道视图是否有可能在加载某些数据之前阻止自己作为模态视图打开。

例如:

addTimeViewController = [[[AddTimeViewController alloc] initWithNibName:@"AddTimeViewController" bundle:nil] autorelease];
addTimeViewNavigationController = [[[UINavigationController alloc] initWithRootViewController:addTimeViewController] autorelease];

Item *item = (Item *)[_dataModel.items objectAtIndex:_currentEditCell];    
[self.navigationController presentModalViewController:addTimeViewNavigationController animated:YES];

[addTimeViewController updateTime:item];

这将打开AddTimeViewController作为模态,但AddTimeViewController必须在显示之前加载某些数据。

在加载数据之前,是否有办法阻止它在模态视图中打开? 我想在AddTimeViewController本身内执行此操作,我不想发送通知并以此方式执行。

2 个答案:

答案 0 :(得分:1)

您不应该阻止viewController加载自身,而是在ViewController打开时,您可以添加一些中间视图,告诉用户您当前正在从远程源加载数据

答案 1 :(得分:1)

仅在完成所有数据任务后加载新ViewController

如果从服务器获取大量数据,那么您可以在后台线程中获取该数据 -

Item *item = (Item *)[_dataModel.items objectAtIndex:_currentEditCell];
[self performSelectorOnMainThread:@selector(loadNewView)
                       withObject:item
                    waitUntilDone:YES];

-(void)loadNewView {
    addTimeViewController = [[[AddTimeViewController alloc] initWithNibName:@"AddTimeViewController" bundle:nil] autorelease];
    addTimeViewNavigationController = [[[UINavigationController alloc] initWithRootViewController:addTimeViewController] autorelease];

    [self.navigationController presentModalViewController:addTimeViewNavigationController animated:YES];
}