0

現在、私は Xamarin.iOS を使用して iOS アプリを作成しており、BaseTabbarController という名前のカスタム UITabbarController を作成しました。このViewControllerでは、次のようなものを実現するために、TabBarの上に中央に上げられたUIButtonを作成しました。 RaisedCenterButton

つまり、これは BaseTabbarController にボタンの onClick デリゲートがあることを意味します。ボタンが押されたら、新しい ViewController に performSeque(push) したいと思います。次のコードでは、「セグエ 'searchSegue' のナビゲーション コントローラーが見つかりませんでした。プッシュ セグエは、ソース コントローラーが UINavigationController のインスタンスによって管理されている場合にのみ使用できます」というエラーが表示されます。

それで、私は今何をすべきですか?これを修正する方法がわかりません..

私の絵コンテはこんな感じで、2行目について話しています。 ここに画像の説明を入力

4

2 に答える 2

2

プッシュセグエを引き起こすボタンがタブバーにある場合、タブバーコントローラーはルートビューコントローラーであると想定されており、プッシュセグエを行うには、コントローラーにナビゲーションコントローラーがコンテナーとして含まれている必要があるため、プッシュセグエを実行しないでください。

たとえば、MyViewController はビュー A のコントローラーであり、OneMoreViewController はビュー B のコントローラーです。ビュー A からビュー B を呼び出してから、ナビゲーション コントローラー内にビュー A を埋め込みます。

// プログラムで

MyViewController *vc= [MyViewController alloc] init];

UINavigationController *nav = [UINavigationController alloc] initWithRootViewController: vc];

ビュー A をタブバーに追加する場合は、タブバー内に nav オブジェクトを追加します。

これで、Push segue を使用してビュー A から viewB を呼び出すことができます。

// ストーリーボードを使用している場合

ナビゲーションコントローラー内に埋め込みたいビューを選択し、メニューバーから Editor\Embed In\Navigation Controller を選択します。それでおしまい。

于 2013-05-16T17:57:21.640 に答える
0

タブ バー コントローラーから 2 行目のナビゲーション コントローラーに接続されたプッシュ セグエがありますが、これは正しくありません。これは関係セグエ (つまり、タブ バー コントローラーのビュー コントローラーの 1 つ、2 番目のタブ) である必要があります。

編集後:

画面上の他のコントローラーからそのコントローラーをプッシュできるようにするには、各タブのすべてのベース コントローラーがナビゲーション コントローラーである必要があります。それが真実である限り、これを行うことができるはずです。基本的な手順は、(タブ バー コントローラーの selectedViewController メソッドを使用して) 画面上にあるナビゲーション コントローラーのスタックを見つけ、pushViewController:animated: を使用してそのナビゲーション コントローラーからコードをプッシュすることです。ストーリーボードでは、プッシュしているコントローラーをすべてから切断し (セグエなし)、ID を持たせて、ストーリーボードからプッシュを実行できるようにする必要があります。

于 2013-05-16T16:30:06.097 に答える