• 締切済み

splitView 詳細画面左上[戻る]の動作

初めて質問させていいただきます。 iOS開発の初心者です。Xcode4.6.3 storyboard(iPad) にてspritVewControllerを使った場合に、以下の実装をしたいのですが、その方法が分からず困っております。 何卒、よろしくお願いいたします。 【前提】 ・Single View Applicationテンプレート使用して、最初のviewControllerは削除します。 ・splitViewControllerを追加します。 ・splitViewControllerの「Is Initial View Controller」にチェックします。 ・下記サイトを参考にして、Main と Detail 画面は表示されるまでの最低限の実装はしています。(iPad 横、縦切り替えによって、Main と Detail 画面も切り替わる状態です)  http://program.station.ez-net.jp/special/handbook/objective-c/uisplitviewcontroller/implement.asp 【困っている事(やりたい事)】 ・iPad縦向きのときだけ、detail画面の左上ボタン(Mainに戻るボタン)をタップしたとき、自前で実装するactionメソッド(下記参照:backButtonEvent)へ飛ばして、また、このとき、左上ボタンをタップしたときの既存動作(左側からMain画面がスライド表示される)は維持したいのですが、以下の実装をしたところ、自前で追加したactionメソッドには飛びましたが、既存動作(左側からMain画面がスライド表示される)がされなくなりました。 =(EzDetailViewController.h)==★行が追加したところです ★- (IBAction)backButtonEvent:(id)sender; === =(EzDetailViewController.m)==★行が追加したところです - (void)splitViewController:(UISplitViewController*)splitController willHideViewController:(UIViewController*)viewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController:(UIPopoverController*)popoverController { // 渡された UIBarButtonItem に表示するタイトルを設定します。 barButtonItem.title = @"戻る"; ★ barButtonItem.target = self; ★ barButtonItem.action = @selector(backButtonEvent:);     :     : } ★- (IBAction)backButtonEvent:(id)sender ★{ ★ NSLog(@"Call in backButtonEvent."); ★} === そもそも、既存のbarButtonItemにaction追加したのがいけないのでしょうか。 ※これによって、既存動作処理が行われなくなったと推察していますが。。。 それとも、追加したactionメソッド内で、既存動作処理と同等のことを実装してあげないといけないのでしょうか。(もしそうであれば、この既存動作処理と同等の実装方法をご教授ください) はたまた、他の解決方法等ありましたら、是非、お教えいただきたく、よろしくお願いいたします。

みんなの回答

noname#190876
noname#190876
回答No.2

推測でものをかいてますが、この処理は、NavController下での戻る、の処理をすれば、スライド操作は、UISplitViewController がやってくれるのではないかと、思います。  ですので、あなたの定義したアクションの抜ける手前の所で、 a)exit segue をつけて、抜ける処理 b)コードで、今の画面を抜けて、一段戻す  のどちらかの処理をすれば、detail 側のNavControllerの管理するスタックは、既に、底をつくので、UISplitViewControllerが、Master側のスライド動作をしてくれるのでは、ないでしょうか。

a_i10
質問者

お礼

xpd154 さん お返事遅くなってすみません。 a, b の手段について、その実装方法を調べてみて試してみたいと思います。 #iOS 開発、storyboard の基本的な事なんですね。勉強不足ですみません。 ありがとうございました。

noname#190876
noname#190876
回答No.1

SplitViewControllerの経験はありませんが、一般論で回答すると、 あなたが、BarButtonに、新規のアクションを定義しているのですから、そこへ行って、その処理がおこなわれます。 ですから、旧来の処理をさらに行いたいのであれば、そのアクション定義の後半部で、自分でその処理を行わないといけないです。

a_i10
質問者

補足

xpd154 さん、回答ありがとうございます。 「そのアクション定義の後半部」とのことですが、ワタクシも最初はそのアクション定義を見つけようとしていたのですが、そのアクション定義自体がソースコード上に見当たらないため、先に質問した実装を試みた次第です。 storyboardのテンプレート(Master Detail Aplication)を使っているが故に、そのへんのアクション定義が隠蔽(!?)されているのかな、と思っているのですが、違うのでしょうか。。。 素人質問で本当にすみません。(storyboard自体も初めて利用しています...) そのアクション定義自体を見つける方法等ご存知でしたら、是非、ご教授ください。