0

概述

我有一个 iOS 项目,我在其中将名称列表存储在表格视图中。

我了解打开/创建数据库的那一刻,有一个完成处理程序来执行一个方法。

脚步:

  1. 就我而言,第一个屏幕是显示名称的表格视图
  2. 有一个 + 按钮(在导航栏上)可以添加一个新名称,该名称会将其带到新屏幕以输入详细信息。

关心

我担心的是,如果我在完成处理程序中获取 tableview 的名称,并且如果用户不等待打开数据库并创建一个新名称,同时保存它,数据库可能不会打开/创建。

问题

  1. 如何处理这样的情况?
  2. 我错过了什么吗?
4

2 回答 2

2

真的,在一切初始化之前,您不应该允许用户更改内容。如果需要一段时间,则只需禁用该功能,直到准备好。

在这种情况下,这很容易。从禁用“添加”按钮开始,并在完成处理程序中启用它。

您可以编写一个 documentIsReady 方法(这将启用编辑,以及在“一切就绪”时您想做的任何其他事情),然后在文档准备好使用时调用它。例如,请参见下面的代码。

    if (![[NSFileManager defaultManager] fileExistsAtPath:[doc.fileURL path]]) {
        [doc saveToURL:doc.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
            [self documentIsReady: success];
        }];
    } else if (doc.documentState == UIDocumentStateClosed) {
        [doc openWithCompletionHandler:^(BOOL success) {
            [self documentIsReady: success];
        }];
    } else {
        BOOL success = doc.documentState == UIDocumentStateNormal;
        [self documentIsReady: success];
    }
于 2012-04-14T04:26:22.657 回答
1

好吧,处理这种情况的一种(简单)方法是添加一个计时器以等待数据库打开/创建。您也可以将按钮(+ 按钮)变灰,直到数据库准备就绪。

于 2012-04-14T03:52:54.607 回答