AlertView以暂停代码

时间:2010-11-15 12:51:16

标签: ios objective-c iphone tableview uialertview

这似乎是iPhone的白象。我已经尝试了各种各样的,甚至循环,我无法使它工作。

我有一个加载表格的视图。但是我已经进入了对象归档和开发目的,我希望有一个初始的AlertView,询问用户是否想要使用已保存的数据库或下载新的副本

(void)showDBAlert {

    UIActionSheet *alertDialogOpen;
    alertDialogOpen = [[UIActionSheet alloc] initWithTitle:@"DownloadDB?" 
                    delegate:self
                    cancelButtonTitle:@"Use Saved" 
                    destructiveButtonTitle:@"Download DB" 
                                         otherButtonTitles:nil];
    [alertDialogOpen showInView:self.view];
}

我在这个例子中使用了一个ActionSheet。我已经实施了协议:

@interface ClubTableViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource, UIActionSheetDelegate>

基于此,我运行它来检查按下了什么按钮:

(void)actionSheet:(UIActionSheet *) actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {


    NSString *buttonTitle=[actionSheet buttonTitleAtIndex:buttonIndex];

    if ( [buttonTitle isEqualToString:@"Download DB"] ) {

        [self loadDataFromDB];

    }

    if ([buttonTitle isEqualToString:@"Use Saved"] ) {

        self.rows = [NSKeyedUnarchiver unarchiveObjectWithFile:[self archivePath]];

        if (self.rows == nil) {
            [self loadDataFromDB];
        }



    }
}

问题是我在构建表的代码是在用户做出选择之前执行的。这导致各种各样的havok。因此,如何在用户做出选择之前暂停代码?

3 个答案:

答案 0 :(得分:2)

如果您使用的是UITableView,则无法“暂停”代码,但无论如何这都不是选择的方法。可能的解决方案是在return 0中加载一个空表((UITableView *)tableView:numberOfRowsInSection),直到用户选择了某些内容,然后使用[tableView reloadData];重新加载tableView的数据

答案 1 :(得分:0)

在你的tableView中:numberOfRowsInSection:只返回零,直到用户做出决定。

答案 2 :(得分:0)

在actionSheet委托方法的末尾添加[self.tableView reloadData];。这将再次触发所有UITableViewDataSource方法。