如何在离开表格视图之前显示警报。

时间:2012-10-16 12:52:34

标签: objective-c ios ipad uitableview uialertview

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

3 个答案:

答案 0 :(得分:0)

  

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

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

  

从不放松用户的工作

因此,保存用户更改的内容可能只是最好的主意。

但是让我们来看看你的实际问题:

  

任何人都可以告诉我如何显示警报

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

答案 1 :(得分: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;
    }
}

答案 2 :(得分:0)

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

DetailViewController *detailVC;

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

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
}
}

希望这有帮助