1

私はストーリーボードを使用して次のことを達成しています:

複数のアイテムを含むテーブル ビューを含むマスター ビューがあります。私のマスター ビューは、ナビゲーション コントローラーに埋め込まれています。私のマスタービューにはサブクラス「MasterViewController」があります

次に、詳細ビューがあります。これは、ナビゲーション コントローラーには組み込まれていません。詳細ビューにはサブクラス「DetailViewController」があります。テーブル セルと詳細ビューの間にセグエがあります。

masterview テーブルのアイテムをクリックすると、detailview にプッシュされます。

マスタービューに戻らずに、詳細ビュー内のマスタービュー テーブル項目をナビゲートできるようにしたいと考えています。「前へ」ボタンと「次へ」ボタンがありますが、これらのボタンのアクションは何ですか?

私は 2 週間以来、目的の c と xcode を使い始めたばかりなので、まだ初心者です...助けてくれてありがとう。

私はこのようなことをしなければならないことをどこかで読んだことがあります:

// Just remove the current 
[self.navigationController popViewControllerAnimated:FALSE];

// Create a new 
DetailViewController* newcontroller = [DetailViewController alloc] init];

// init detailview object ....

[self.navigationController pushViewController:newcontroller animated:FALSE];

しかし、このコードはマスタービューに戻るだけです...

アップデート :

詳細ビュー内をナビゲートできましたが、次のアイテムをクリックすると、すべてのコンセントが消えてしまいましたか???

これは私の「次へ」ボタンのコードです:

    DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:nil bundle:nil];

    // fetch next object and pass it to the new detailviewcontroller
    detailViewController.detailItems = self.detailItems;

    UINavigationController *navController = self.navigationController;

    // Pop this controller and replace with another
    [navController popViewControllerAnimated:NO];

    [navController pushViewController:detailViewController animated:NO];

上記のコードを実行すると、詳細ビ​​ューがポップされ、新しい詳細ビューにプッシュされます。しかし、今は空の詳細ビューしかありません...詳細ビューのviewdidloadメソッド内で、detailitemsオブジェクトを出力するようにNSLOGを設定しましたが、次のオブジェクトは正常に表示されますが、現在ラベルは表示されていません...

私のviewdidload内には、次のコードがあります:

NSString *itemName = [self.detailItems objectForKey:@"name"];
NSLOG(@"current item : %@",itemName); 
// Correctly shows the current item name

また、次のとおりです。

self.nameLabel.text = itemName;
NSLog(@"name label : %@",self.nameLabel.text);

しかし、上記のコードは、最初にマスター ビューから詳細ビューにプッシュしたときにのみラベル テキストを表示します。詳細ビューに入って「次へ」ボタンをクリックすると、次のように表示されます。

name label : (null)

新しい詳細ビューにプッシュすると、ラベルがどうにか消えたようです???

助けてください !

4

1 に答える 1

1

わかりました自分で解決策を見つけました...

1行だけ変更しました:

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:nil bundle:nil];

上記を以下のコードに置き換えました。Bob's your uncle :

DetailViewController *detailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"myDetailView"];

「myDetailView」は詳細ビューの識別子です。

于 2012-05-23T14:25:31.513 に答える