0

同じ UINavigationController を持つ別の UIViewController からコードで UIViewController にプッシュすると、問題が発生します。

メモと仮定:

  1. IB を使用してすべての UIViewControllers を作成しましたが、コードを使用してそれらの間をプッシュしたいと考えています。
  2. 両方の UIViewController には UITableViews が含まれています。最初に検索基準を選択し、2 番目に結果を表示します。
  3. クラス名の「LT」はリーグテーブルの略です。

UINavigation コントローラーには 3 つのクラスがあります。

  1. タイプ UINavigationController の LTMasterNavController は、後続のすべてのビュー コントローラにわたってプロパティと結果を所有します。LTOverviewViewController が結果を生成すると、LTResultsViewController はここから結果を取得します。
  2. LTOverviewViewController - UITableView を含むタイプ UIViewController の。LTResultsViewController に表示されるフィルターを選択するために使用されます。
  3. LTResultsViewController - UITableView を含むタイプ UIViewController の。LTOverviewViewController からの結果を表示するために使用されます

以下の Dropbox リンクで私のコードを見つけてください: https://www.dropbox.com/sh/9m37y4f1gws99lf/VGNloaLSVO

LTOverviewViewController で [リーグ テーブルを表示] ボタンを押すと、プログラムでフィルターから結果を取得し、すぐに LTResultsViewController にプッシュする必要があります。

このコードを使用すると、LTResultsViewController にプッシュされますが、ビューには何も含まれていないように見えます。UITable ビューのない黒で、何も選択できません。

テスト/デバッグでは、LTOverviewViewController に「Push to Results」という別のボタンを作成し、IB のプッシュ アクションとして LTResultsViewController に接続しました。「リーグテーブルを表示」ボタンを押してから「結果にプッシュ」ボタンを押すと完全に機能しましたが、ユーザーが2番目のボタンを押さなくても実行できるようにしたいと考えています。これで何日も立ち往生しているので、どんな助けでも大歓迎です!

どうもありがとう、ジェームズ

4

1 に答える 1

1

ストーリーボードとセグエを使用すると、これは非常に簡単です。ストーリーボードで、データを転送したい UIViewController 間の接続をクリックします。LTOverviewViewController と LTResultsViewController の間だと思います。セグエに識別子の名前を付けます。たとえば、ResultsSegue とします。

次に、LTOverViewController で、次のメソッドを実装する必要があります。

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

このメソッドでは、セグエ名と destinationViewController を識別し、新しいビュー コントローラーに必要なデータを渡します。以下に例を示します。

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"ResultsSegue"])
    {
        LTResultsViewController *viewController = [segue destinationViewController];
        [viewController setData:self.data];
    }
}

ストーリーボードがこの特定のセグエを使用する場合、このメソッドが呼び出されて実行されてから、新しい viewController に移動します。

于 2012-12-11T09:22:08.523 に答える