私はマスター詳細アプリケーションを使用しています。マスター セクションにはレコードが一覧表示され、詳細セクションには各レコードの詳細が表示されます。詳細セクションは、各レコードを編集できるテーブル ビューです。問題は、「レコードの編集中に反対側のレコードをタップすると、元のレコードに加えた変更が失われ、新しいレコードの詳細がテーブルビューに表示される」という ことです...誰か教えてください「新しいレコードの詳細を表示する」前に、 「保存またはキャンセル」を求めるアラートを表示する方法..
3 に答える
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
}
}
お役に立てれば
元のレコードに加えた変更はすべて失われます
アプリケーションを開発する際の一般的なルールは次のとおりです。
ユーザーの作業を失うことはありません
したがって、ユーザーが変更したものを保存するのが最善の方法かもしれません。
しかし、実際の質問に移りましょう:
アラートを表示する方法を誰か教えてください
2 つのボタンを備えたプッシュ通知のように見える変更を意味していると思います。それらは UIAlertView で作成します。次に、アラートのデリゲートで、どのボタンが押されたかを把握し、続行する方法を決定できます。UIAlertView のドキュメントを確認してください - とても簡単です:)
これを試して、
-(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;
}
}