0

Split View Controller を使用して、アプリケーションを iPhone 6+ に適合させたいと考えています。現在、私のアプリは単純なテーブル ビューで、記事と詳細ビューを一覧表示しています。

iPhone 6 Plus でランドスケープ モードのときにアプリを分割ビューに切り替えたいのですが、それを適切に行う方法がわかりません。

新しいストーリーボードを作成し、Split View コントローラーを統合しましたが、その後行き詰まりました。マスター ビュー (テーブル ビュー) でセルをタップしたときに、詳細ビュー コントローラーにニュースをプッシュする方法がわかりません。これを didSelectRowAtIndexPath メソッドに追加しようとしました:

[self.navigationController pushViewController:viewController animated:YES];

しかし、それを行うと、詳細ビ​​ューが分割ビュー (マスター ビュー) の左側の部分に押し込まれます。

また、Table View Controller セルと Detail View Controller の間に「show details」セグエを追加し、didSelectRowAtIndexPath メソッドを追加しようとしました。

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

しかし、同じ問題、ビューはマスター ビュー内にプッシュされます。

その他の問題として、ポートレート モードでは、デフォルト ビューは詳細ビューです。マスター ビューを表示するにはどうすればよいですか?

よろしくお願いいたします。

4

2 に答える 2

0

マスター ビュー コントローラー内から、を使用して SplitViewController 自体にアクセスできるはずですself.splitViewController。SplitViewController にはプロパティ viewControlers があります。これは、2 つの要素を持つ配列です。1 つ目はマスターのビュー コントローラーで、2 つ目は詳細側のビュー コントローラーです。いずれの場合も、通常、階層の最上位のコントローラーはナビゲーション コントローラーです。したがって、マスター コントローラー (tableView) コードから、次のような方法で detailController にアクセスできます。

UINavigationController *detailNav = self.splitViewController.viewController[1];
[detailNav pushViewController:viewController animated:YES];

実際には、マスター ビューで別のセルをクリックしたときにスタックがひどく構築されるのを避けるために、おそらくプッシュよりも洗練されたものを使用する必要があります。しかし、これでうまくいくはずです。また、Apple のテンプレートを使用してテスト マスター/詳細アプリを作成し、それらがどのように機能するかを分析します。これには、マスター ビュー コントローラーをポップアップ コントローラーで表示するためのコードが含まれています。これは、ポートレート モードでの表示方法です。

于 2014-10-04T08:34:17.713 に答える
0

iOS 8 での分割ビューの動作についてサンプル コードで説明しているブログがいくつかあります。

オブジェクティブ C

迅速

非常に明確で便利です:)

于 2015-05-07T10:44:38.087 に答える