1

UINavigationController を使用して UIViewController をプッシュする UITableViewController があります。

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

detailViewController では、ユーザーがボタン (SMS メッセージを送信するための MFMessageComposeViewController) をタップしたときにモーダル ビューを表示し、次のように閉じます。

[self presentModalViewController:smsViewController animated:YES];
...
// user pushes Send or Cancel button on the view
...
[self dismissModalViewControllerAnimated:YES];

SMS モーダル ビューは適切に閉じますが、UINavigationBar の [戻る] ボタンをクリックすると、ビューがアニメートされてテーブル ビューに戻りません。詳細ビューが消え、UITableViewController のビューが表示されます。[戻る] ボタンのアニメーションとフェードが行われ、選択されたテーブル セルにはフェード ブルーの効果がまだありますが、ビュー アニメーションはありません。

ビューが適切にアニメーション化されない理由を知っている人はいますか? SMS モーダル ビューを開かなければ、アニメーションは正常に動作するので、モーダルの動作が原因であると確信しています。

このタブ バー アイテムの Interface Builder ビューの配置は次のようになります。

配置を見る

4

2 に答える 2

0

私は自分の問題を発見しました。-(void)viewWillAppear:(BOOL)animatedカスタム タブ バーの処理をオーバーライドするカスタム UITabBarController サブクラスを使用しています。ただし、[super viewWillAppear:animated]オーバーライドされたメソッドを呼び出していませんでした。はい、私の開発者人生の悲しい日です。これが私が経験した動作を引き起こすのはまだ奇妙に思えますが、この変更により修正されたことは確かです.

興味深いことに、モーダル プッシュ/ディスミス アニメーション[super viewWillAppear:animated]は、iPhone 4.3 シミュレーターでの呼び出しがなくても適切に機能します。ただし、iPhone 5.0 または 5.1 シミュレーターでは機能しません。(シミュレーターでは SMS がサポートされていないため、非 MFMessageComposeViewController を使用して、iPhone シミュレーターでのモーダル動作をテキストで伝えました)。

于 2012-07-26T17:24:39.803 に答える
0

この行[self.navigationController pushViewController:detailViewController]; を次のように変更してください

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

そして、detailViewviewWillAppearviewWillDisappearメソッドが に設定されているかどうかを確認しますYES

于 2012-07-18T17:50:14.510 に答える