Interface Builderでは、ナビゲーションバーをクリックしてTable View Controllerにドラッグできません!!!とてもイライラします。
必要なのは、編集ボタンを備えたテーブルビューです(インターフェイスビルダーで行います)。これが不可能な場合、プログラム的にnavbarを追加するにはどうすればよいですか?
前もって感謝します。
アウトラインビューから、Table View Controllerが選択されていることを確認します。
次に、Editorメニューに移動し、Embed Inサブメニューをクリックして、Navigation Controllerを選択します。ナビゲーションコントローラーは、リレーションシップが組み込まれたTableViewコントローラーをポイントしています。
上部に編集ボタンがあるテーブルビューの場合は、UITableViewをrootViewとして使用して、UINavigationControllerを使用します。つまり、テーブルビューのカスタムUITableViewサブクラスを作成し、それをUINavigationControllerインスタンスのrootViewとして使用します。 (プログラム的には、UINavigationControllerの-(id)initWithRootViewController
で設定されます。IBでも設定可能です。)
次に、UITableViewサブクラスで、次の行のコメントを解除します。
- (void)viewDidLoad {
[super viewDidLoad];
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
また、UINavigationControllerのビューは、ナビゲーションバーの右側に編集ボタンがあるテーブルビューとして表示されます。
コントローラーはスタックの最上部にあるため、左側に「戻る」ボタンがないため、self.navigationItem.leftBarButtonItem
作成したUIBarButtonItemに対応します。
Interface Builderでこのようなことを行うのは難しいと思いますが、幸いなことに、この方法でナビゲーションバーとバーボタンアイテムをテーブルビューに追加することができます。方法は次のとおりです。
[〜#〜] edit [〜#〜]
上記のアプローチの問題は、Bogatyrが指摘するように、ナビゲーションバーがテーブルビューと一緒にスクロールすることです。 Appleナビゲーションバーとサイズに合わせてサイズ変更されたUIViewController
の両方のインスタンスを所有するUITableView
のカスタムサブクラスを使用することをお勧めします。残念ながら、 UITableViewController
サブクラスに必要なUIViewController
動作を自分で実装します。
うまく機能すると思われる別のアプローチは、ナビゲーションバーを含む空白の背景ビューと、適合する空のコンテンツビュー(UIViewController
のインスタンス)を所有するUIView
のカスタムサブクラスを作成することですナビゲーションバーの下。カスタムサブクラスには、同じnibファイル内のUITableViewController
のインスタンスを指すアウトレットがあります。
これには、すべてのビューコンポーネントをInterface Builderで作成および構成できるという利点があり、UITableViewController
メソッドを最初から実装する必要がありません。 Table View Controllerの親で注意する必要があるのは、viewDidLoad
の親のコンテンツビューのサブビューとしてTable Viewを追加することだけです。
親は、ナビゲーションバーのボタン項目のアクションメソッドを実装し、必要に応じてデリゲートパターンを実装できます。
IOS6以降では、コンテナビューを使用できます。そのため、View Controllerを取得してNavigation Barを追加し、同じView ControllerにContainer Viewを追加する必要があります。自動的に、コンテナビューに新しいView Controllerリンクが追加されます。次に、それを削除し、ストーリーボードのTable View Controllerを削除します。次に、コントロールドラッグでTable View Controllerをコンテナビューに埋め込みます。それが役に立てば幸い。
まず、Navigation Controllerを追加し、Table View Controllerを(ルートView Controllerとして)Navigation Controllerに配置します。私はIBを使用していないため、これはコードで行われています。
なぜ、File's OwnerをUIViewControllerのサブクラスに設定し、navigationItemをUIViewControllerのnavigationItemアウトレットにフックして、navigationItemを.xibファイルにドラッグできないのはなぜですか。 IB/XCode統合の本当の穴のようです。確かに、ViewControllerのインスタンスをxibファイルにドラッグし、navigationItemをViewControllerにドラッグして、タイトルとbarbuttonitemsをそのように設定できるためです。
したがって、IBでUITableViewControllerサブクラスオブジェクトのナビゲーションバーを定義する場合は、xibファイル(ただし、UITableViewControllerのtableviewを含む1つの.xibファイルではなく!)でTableVCオブジェクトを作成する必要があります。次に、TableVCオブジェクトを別のオブジェクト(アプリケーションデリゲートなど)のアウトレットにフックします。これは、アプリのライフタイム全体でTVCのインスタンスを1つだけ必要とする場合、または動的にインスタンスを作成する場合に機能しますNSBundleクラスのloadNibNamed:owner:optionsメソッドを使用して、この追加の.xibファイルを手動でロードするコード内のTableVC。
次の手順は、iOS 9で機能しました。
これは他のeasy wayです。
ナビゲーションバーを簡単に追加できます。