0

我正在使用主详细信息应用程序。在主部分中列出记录,详细部分显示每个记录的详细信息。详细信息部分是一个表格视图,我们可以在其中编辑每条记录。问题是“在编辑记录时,如果我点击另一侧的记录,我对原始记录所做的任何更改都会丢失,新记录的详细信息会显示在表格视图中”...... 谁能告诉我我如何在“显示新记录详细信息”之前显示要求“保存或取消”的警报..

4

3 回答 3

0

我对原始记录所做的任何更改都将丢失

开发应用程序的一个常见规则是

永远不要丢失用户的工作

因此,最好只保存用户更改的内容。

但是,让我们直接回答您的实际问题:

谁能告诉我如何显示警报

我认为您的意思是那些看起来像带有两个按钮的推送通知。您使用 UIAlertView 创建它们。然后在警报的委托中,您可以确定按下了哪个按钮,您可以决定如何继续。只需查看 UIAlertView 的文档 - 它非常简单 :)

于 2012-10-16T13:04:07.147 回答
0

尝试这个,

-(void)tableView:(UITableView *)tableView1 didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:LString(@"ISCO_FLOW_CALC") message:LString(@"DELETE_MESSAGE") delegate:self cancelButtonTitle:LString(@"CANCEL") otherButtonTitles:LString(@"SAVE"), nil];
        alert.tag=11;
        [alert show];
        [alert release];
}
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {

    if(buttonIndex==1 && alertView.tag==11)
    {
        //your save data action;
    }
    if(buttonIndex==0 && alertView.tag==11)
    {
        //your Cancel data action;
    }
}
于 2012-10-16T13:04:12.417 回答
0

在 MasterViewController 中保留对您的 DetailViewController 的引用,例如。在您的 MasterViewController.h 中:

DetailViewController *detailVC;

将此引用设置为您最近在 didSelectRowAtIndexPath 中的 DetailViewController 并在显示新的 detailVC 之前始终检查它是否不为零

DetailViewController *controller=[[DetailViewController alloc] init]; //Or similar
if (detail){
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Save or Cancel"  message:@"Save or Cancel" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Save",nil];
    [alert show];
}
else{
detailVC=controller;
//Show controller
}

现在在用户点击 UIAlertView 的按钮后显示新的 detailViewController:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex==0) { //Tapped cancel
   //show detailVC
}
else{ //Tapped save
 //save
 //Show detailVC
}
}

希望这可以帮助

于 2012-10-16T13:09:29.407 回答