2

2つの異なるビューAとBを制御する2つのタブを含む1つのメインTabBarControllerを備えたアプリがあります。ビューAはscrollViewで、ビューBはTableViewです。最初にアプリをロードしたとき、ビューAのスクロールビューは空です。

scrollViewにページを追加するために、次のように設定しました。ビューBに移動し、navigationBarが埋め込まれたビューに対して1つのモーダルセグエを実行します。ナビゲーションバーには、ビューを閉じるために使用する「キャンセル」ボタンが1つだけあります。それ以外の場合、ユーザーは画像をクリックして、別のビューに別のモーダルセグエを実行する必要があります。このビューにはナビゲーションバーがなく、「DONE」ボタンが1つあります。これを使用して、最初のtabBarControllerにモーダルセグを実行します。

問題は次のとおりです。「DONE」を押した後、ページがエラーなしでscrollViewに追加されます。ただし、同じtabBarControllerの2つのインスタンスがメモリ内に浮かんでいると思います。別のボタンを使用してscrollViewに含まれているビューを取得しようとすると、空になっていることが通知されます(viewDidLoadおよびviewDidAppearの実行中はいっぱいでしたが)。

最初のtabBarControllerビューを削除するにはどうすればよいですか、それ以外の場合は、すでに割り当てたtabBarControllerに戻るにはどうすればよいですか?どんな助けでも大歓迎です!ありがとう!

4

1 に答える 1

2

元のViewControllerに戻るためのセグを実行しないでください。むしろ、アニメーション化された現在のView Controllerを閉じて、元のtabBarControllerを表示する必要があります。

セグエしていたビュー内に、次を追加します。

tabBarController *tabs = (tabBarController*)[[self presentingViewController]presentingViewController];
tabs.selectedViewController = [tabz.viewControllers objectAtIndex:0];

[[[self presentingViewController] presentingViewController] dismissViewControllerAnimated:YES completion:nil];

次に、ビューAが表示され、同じ割り当てを使用します。

于 2012-11-01T05:51:30.253 に答える