这似乎是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。因此,如何在用户做出选择之前暂停代码?
答案 0 :(得分:2)
如果您使用的是UITableView,则无法“暂停”代码,但无论如何这都不是选择的方法。可能的解决方案是在return 0
中加载一个空表((UITableView *)tableView:numberOfRowsInSection)
,直到用户选择了某些内容,然后使用[tableView reloadData];
重新加载tableView的数据
答案 1 :(得分:0)
在你的tableView中:numberOfRowsInSection:只返回零,直到用户做出决定。
答案 2 :(得分:0)
在actionSheet委托方法的末尾添加[self.tableView reloadData];
。这将再次触发所有UITableViewDataSource方法。