0

Xcodeを使用すると、ビューBに移動するビューAがあります。

Back UIBarButtonItemを押すと、ユーザーにUIActionSheetを提示して、ビューAに戻るためのナビゲーションを確認しようとしています。

ビューが戻ってから(ユーザー入力に応じて)戻るか、現在の画面にとどまるのを防ぐために、コードで何をする必要がありますか?

4

2 に答える 2

8

プログラムで戻るボタンを追加します。

例えば。

UIButton *backBtn= [[UIButton alloc] initWithFrame:CGRectMake(0,0,54,30)];
 [backBtn addTarget:self action:@selector(backButtonPressed:)forControlEvents:UIControlEventTouchUpInside];
 UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithCustomView:backBtn];   
[backBtn release];
 [[self navigationItem] setLeftBarButtonItem:backBarButton];
 [backBarButton release];

  //backButtonPressed is the selector for backBtn

次に、そのセレクターからActionSheetを提示し、ユーザーに基づいて前のviewControllerに移動するかしないでください。

前のページに移動するには、popViewMethodを使用します。

`

于 2012-05-13T03:16:32.280 に答える
1

他のすべてのアクションにUIActionSheetを提示しないでください。この目的には、UIAlertViewを使用することをお勧めします。Apple UIActionsheetガイドラインによると:-

タスクを完了するための別の方法を提供します。アクションシートを使用すると、現在のタスクのコンテキストで意味のあるさまざまな選択肢を提供できます。これらの選択肢をユーザーインターフェイスに永続的に配置する必要はありません。

潜在的に危険なタスクを完了する前に確認を取得してください。アクションシートは、ユーザーに、これから実行しようとしているステップの潜在的に危険な影響について考えるように促し、いくつかの代替案を提供します。このタイプの通信は、iOSベースのデバイスで特に重要です。これは、ユーザーが意図せずにコントロールをタップすることがあるためです。

UIAlertViewの場合:-

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Alert View"
                                                            message:@"Do You want to go back to previous screen?"
                                                            delegate:self
                                               cancelButtonTitle:@"NO"
                                               otherButtonTitles:@"YES",nil];
[alertView show];
[alertView release];

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0) {
        NSLog(@"THE 'NO' BUTTON WAS PRESSED");
    }
    if (buttonIndex == 1) {
        NSLog(@"THE 'YES' BUTTON WAS PRESSED");
    }
}

UINavigationControllerの戻るボタンのアクションでこれを実装します。「YES」または「NO」を押したボタンに従って、ナビゲーションを許可できます。また、UIAlerrtVIewDelegateプロトコルに準拠します。

于 2012-05-13T04:54:55.713 に答える