1

私は2つのシーン間のトランジションを作成しようとしています。これは、プロダクションコードにあるもののダムダウンバージョンです。

2ビューコントローラ

どちらもViewController、左側にはTableViewがあり、クリックすると右側のシーンに遷移し、クリックされたセルからのデータを渡します。

現在、モーダルセグエを使用すると、セルをタップして正しく遷移しますが、ナビゲーションバーに戻るボタンを配置する方法がわかりません

私はセルから2番目のViewControllerに次のように移行しています:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    [self performSegueWithIdentifier:@"toSecond" sender:self];

}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    if ([segue.identifier isEqualToString:@"toSecond"])
    {
        NSLog(@"Preparing segue for toSecond, setting some data on target scene");

        NSIndexPath *path = [self.theTableView indexPathForSelectedRow];
        MyData * myData = [myDataArray objectAtIndex:path.row];

        // Obtain handles on the current and destination controllers
        FirstController * startingViewController;
        SecondController * destinationController;

        startingViewController = (FirstController * ) segue.sourceViewController;
        destinationController = (SecondController * ) segue.destinationViewController;

        destinationController.someData = myData;
    }
}

SecondController、この前のSOの質問で提案されているように、プログラムで戻るボタン項目を含めるようにviewDidLoadメソッドを修正しようとしました。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    UIBarButtonItem * back = [[UIBarButtonItem alloc] initWithTitle:@"Back" 
                                                              style:UIBarButtonItemStylePlain 
                                                             target:nil 
                                                             action:nil];

    [self.navigationItem setBackBarButtonItem:back];
}

だから私の質問は、どうすればそのナビゲーションバーに戻るボタンを取得できますか?このようなもの :

希望の戻るボタン

ありがとう

4

4 に答える 4

2

ストーリーボードを使用する1つの(簡単な)方法は、テーブルのあるビューにナビゲーションコントローラーを埋め込むことです。表のある正しいビューが強調表示されていることを確認してから、[エディター]>[埋め込み]>[ナビゲーションコントローラー]に移動します。

テーブルの行をクリックすると、戻るボタンが自動的に表示されます。ダンが言ったように、それがあなたの写真の2つのビューの間のプッシュセグエであることを確認してください。

于 2012-06-14T20:36:51.383 に答える
0

テーブルのあるビューがある場所の代わりに、UINavigationControllerテーブルのあるビューを削除しないでください。セグエする場所の代わりに、またはルートコントローラーの場合はnavconを使用してください。テーブルを使用してビューをナビゲーションコントローラーのルートビューコントローラーにし、モーダルセグエの代わりにプッシュセグエを使用すると、自動的に[戻る]ボタンが表示されます。

于 2012-06-14T20:31:53.147 に答える
0

最良の方法はUINavigationController、テーブルビューコントローラーの親としてaを使用し、モーダルセグエの代わりにプッシュセグエを使用することです。

バーのプロパティを設定することで、の2つのインスタンスを作成UINavigationItemし、それらについて伝えることができます。インスタンス0は、テーブルビューコントローラを表します。UINavigationBaritems

UIButtonタイプ101(文書化されていない戻るボタンタイプ)でを作成し、UIBarButtonItemusingでラップすることができますinitWithCustomView:

于 2012-06-14T20:36:27.047 に答える
0

モーダルで表示されたViewControllerにバックルックボタンを簡単に追加することはできません

バーの左側に通常のボタンを追加するだけの場合は、次の手順を実行します

    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" 
style:UIBarButtonSystemItemDone target:nil action:nil];

    UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"Title"];
    item.leftBarButtonItem = rightButton;
    item.hidesBackButton = YES;
    [self.yourNavigationBar pushNavigationItem:item animated:NO];

ビューをモーダルに表示することを主張し、それでも戻るボタンスタイルが必要な場合は、 Three20を使用できます。

于 2012-06-14T20:41:19.340 に答える