3

こんにちは、私は iOS が初めてで、ビューの操作について質問があります。

ビューをプッシュするナビゲーションバーの PREVIOUS ボタンと NEXT ボタンを IB で配線しています。これはすべてうまくいきます。ただし、ビューをスキップできるように、正確に何をする必要があるか、またはコードを配置する必要がある場所を見つけるのに苦労しています。私の状況を単純化するには...

- VC1、VC2、VC3、VC4 という名前の 1 つのナビゲーション コントローラーと 4 つのビュー コントローラーがあります。各 VC には .H/.M があります。VC1 から始まり、次々と続きます。

VC2 の設定に基づいて、VC3 をスキップして VC4 にジャンプしたいとします。これを行うコードをどこに配置しますか? VC3 の NAV ボタンから IBAction メソッドをフック解除する必要がありますか?

これが以前に取り上げられていた場合は、お詫び申し上げます。ツットがある場合、またはこれに答える投稿を知っている場合は、お知らせください。検索を行いましたが、おそらく間違った用語を使用したために、検索で一般的な投稿が返されました。

前もって感謝します。

4

2 に答える 2

0

最初に:
新しいビュー コントローラーをプッシュしているコードをいくつか示してください。おそらく、ナビゲーション コントローラーのコード全体です。

2 番目(ソリューション) :

私が想定し:

  • 前/次のボタンは、navigationController クラスにリンクされています
  • ボタンの 1 つをクリックすると呼び出される適切なメソッド (prevPressed:/nextPressed:) があります。

次のことをお手伝いします。

  • visibleViewController@propertyを使用して、現時点でどのコントローラーが表示されているかを知っています
  • navBar のボタンをクリックするたびに、visibleViewController次/前のどのビュー コントローラーをプッシュ/ポップするかを尋ねることができます

最良の解決策は、コントローラー VC1/2/3/4 のすべてが、そのインターフェイスでメソッドを定義する viewController クラスのサブクラスである場合です。

- (Class)nextViewControllerClass;
- (Class)previousViewControllerClass;

そして実装では:

- (Class)nextViewControllerClass {
    return [VC4 class];
}

- (Class)previousViewControllerClass {
    return [VC1 class];
}

そして、あなたの navigationController コードでこれを行います:

- (IBAction)next:(id)sender {
    UIViewController *nextViewController = [[[self.visibleViewController nextViewControllerClass] alloc] init];
    [self pushViewController:nextViewController animated:YES];
}
于 2013-04-12T15:38:56.363 に答える