0

作業中のアプリで少しレンガの壁にぶつかりましたが、ナビゲーションコントローラースタック内の特定のビューコントローラーにジャンプする方法に頭を悩ませることはできません。

それで、アプリの構造の概要を説明します。ビュー間のナビゲーションにストーリーボードとセグエを使用しています。

ホーム画面-サーバーから最新の4つのジョブ更新のリストを取得し、それらをテーブルに表示し、UINavigationControllerをモーダルに表示するボタンがあります。

UINavigationController

ジョブリスト-サーバーから現在のすべてのジョブのリストを取得し、それらをテーブルに表示します。セルを選択すると、のjobid間にジョブの詳細で設定さprepareForSegue:れ、スタックにプッシュされます。

ジョブの詳細-ジョブのすべての詳細(説明、写真など)を取得して表示します。

したがって、ホーム画面ボタン>ジョブリスト>ジョブの詳細を介してジョブをナビゲートすることは問題ではなく、完全に機能します。

私が理解できないのは、ホーム画面で最新のジョブ更新の1つを選択するときに、特定のジョブの詳細にジャンプする方法です。

十分に説明できたと思います。どんな助けでも大歓迎です。

ありがとう。

4

2 に答える 2

1

JobListViewControllerにいくつかのプロパティを作成します。

@property (assign) int initialisedWithSelectedJob;
@property (assign) int selectedJob;

ホーム画面からモーダルで表示する場合、ジョブが選択されている場合は、JobListViewControllerのinitializedWithSelectedJobに渡します。

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender  {

   [(JobListViewController*)[segue.destinationViewController topViewController] 
                                     setInitialisedWithSelectedJob:selectedJob];

}

次に、JobListViewControllerのviewDidLoadで:

if (self.initialisedWithSelectedJob)
    {   
        self.selectedJob = initialisedWithSelectedJob;
        [self performSegueWithIdentifier:@"onToJobDetails" sender:self];
        self.initialisedWithSelectedJob == 0;
    }

initialisedWithSelectedJobをリセットして、再びまっすぐにバウンスせずにJobDetails画面からここに戻ることができるようにする必要があります。)。

JobListViewControllerのprepareForSegueで、すでに行っているように、selectedJobIDを渡すことができます。

アップデート

このようにして、ジョブの詳細からJobListViewControllerに戻ります。ホーム画面->ジョブリスト画面->ジョブ詳細画面からの移動は、ホーム画面とリスト画面のどちらでジョブを選択しても一貫します。

の答えに従う0x7fffffffと、ホーム画面からジョブを選択するか、ジョブリスト画面からジョブを選択するかにかかわらず、ナビゲーションはまったく異なります。

デザインを少し考え直すべきかどうか疑問に思っています。ホーム画面とJobListViewControllerの両方にジョブリストを表示するのは、おそらく少し冗長ですか?

于 2013-01-17T13:10:55.247 に答える
0

Interface Builderでは、プッシュ先のViewControllerにIDを割り当てることができます。

ここに画像の説明を入力してください

次に、ユーザーが「最新のジョブ」を選択すると、以下を使用して、その識別子を使用してViewControllerにプッシュできます。

UIViewController *detailController = [[self storyboard] instantiateViewControllerWithIdentifier:@"myID"];
[[self navigationController] pushViewController:detailController animated:YES];

もちろん、これを行うには、ホームビューコントローラーをナビゲーションコントローラー内に埋め込む必要があります。

于 2013-01-17T12:53:27.677 に答える