テーブルビューを作成し、そこからユーザーがセルを押したとすると、detailItemViewに移動しますが、現時点での唯一の問題は、ユーザーがdetailItemViewにいるときはいつでも、ナビゲーションコントローラーが既に埋め込まれていると思っても、戻るボタンがないことです。
ユーザーがセルを押すとセグエを実行するコードは次のとおりです。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using [segue destinationViewController].
var nav = segue.destinationViewController as! UINavigationController
var detailScene = nav.topViewController as! DetailViewController
// Pass the selected object to the destination view controller.
if let indexPath = self.tableView.indexPathForSelectedRow() {
let row = Int(indexPath.row)
detailScene.currentObject = objects?[row] as? PFObject
}
}
ストーリーボードのスクリーンショット:
編集されたスクリーンショット
以下の答えを試してみましたが、まだ戻るボタンがありません
別のスクリーンショット、detailViewコントローラーには戻るボタンがありません
NavigationController内にTableViewControllerを埋め込みます。直接DetailViewControllerではありません。スクリーンショットをご覧ください。
TableViewControllerとDetailViewControllerを接続するセグエのタイプがShow(e.g. Push)であることを確認してください。文字通り Push Navigationstackの上に新しいビューを置く必要があります。
Tableviewcontrollerとdetailviewcontrollerの間のリンクであるStoryBoardSegueをクリックします。属性インスペクタで、チェックされている場合でも、「アニメーション」チェックをクリックする必要がある場合があります。これは、「種類」ドロップダウンメニューにある「表示(例:プッシュ)」を選択した後に行います。次に、アプリを実行し、アプリを停止した後、同じ「アニメーション」オプションを再選択します。これはバグだと思います。解決方法を見つけるのに1時間かかりました。さらに、非推奨の「プッシュ」を使用できますが、これにより警告が表示されます。非推奨の「プッシュ」は、StoryBoardSegue属性インスペクターの「種類」の下にあります。
私はちょうど同じ問題を抱えていましたが、セグエを削除し、再度追加してすぐに識別子を与えることで解決しました。
私もこれに苦労していて、セグエの識別子に名前を付けました。テーブルビューからビューへのセグエ(矢印)を選択し、オプションのある右上に移動して、[属性インスペクターの表示]を選択するだけです。識別子のフィールドがあります。
属性インスペクタの「インターフェイススタイル」をdetailViewの「推定」に変更
現在のビューコントローラーがナビゲーションコントローラーに埋め込まれている場合は、ナビゲーションコントローラーに詳細ビューコントローラーを埋め込む必要はありません。ボタンを詳細ビューコントローラに接続するだけで、戻るナビゲーションが自動的に表示されます。
uinavigation
をUItableview
で作成し、セルを(show)として接続します