0

plistのデータからtableViewを作成しています。セルを選択すると、prepareForSegue と indexPathForSelectedRow を使用して、plist データを詳細ビュー コントローラー (DVC) に取り込みます。DVC には、tableView で選択された行に応じて、switch ステートメントを使用して特定の画像を読み込む UIImageView があります。これはすべて正しく機能しています。

私のUIImageViewにtapGestureRecognizerを追加して、DVCの画像をタップすると新しいView Controllerが表示されるようにします。そのView Controllerでは、UIScrollViewにUIImageViewがあります。画像をズームおよびパンできるように、DVC からの画像を次のビュー コントローラーに読み込む必要があります。

ストーリーボードを使用しています。DVC の UIImageView でユーザー操作が有効になっていることを確認し、ドラッグ アンド ドロップで tapGestureRecognizer を追加しました。次に、tapGestureRecognizer から最終的なビュー コントローラーへのセグエを作成し、シミュレーターで実行しました。DVC で画像をタップすると、最後のビュー コントローラーが起動します。

私が理解できないのは、最後のView ControllerのUIImageViewに、DVCからの画像を表示するように指示する方法です。これは、tableViewで選択された行に基づいて常に異なります。

それが理にかなっており、誰かが私がこれを達成する方法を知っているかもしれません。

4

1 に答える 1

0

私はそれを考え出した。要約すると、テーブルビューで選択された行に基づいて、plist から詳細ビュー コントローラーに情報を渡す必要がありました。次に、詳細ビューコントローラーで、画像をタップして新しいビューコントローラーで画像を開くことができるようにしたいと考えました。詳細ビュー コントローラーの画像は、選択した行によって設定されていたため、3 つ目のビュー コントローラーを作成して画像を設定するだけではありませんでした。

テーブルビューで行が選択されると、plist から詳細ビューコントローラーにデータが渡されます。それはここで達成されています:

tableviewcontroller.m

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        NSIndexPath *indexPath = [[self tableView] indexPathForSelectedRow];
        NSDictionary *bighornData = _bighornTable[indexPath.row];
        BighornDetailViewController *bhdvc = (BighornDetailViewController *) [segue destinationViewController];
        bhdvc.bighornData = bighornData;
        bhdvc.bighornZoneNumber = indexPath.row;
    }

画像は、bighornData に格納されている番号で詳細ビュー コントローラーに設定されています。詳細View Controllerがロードされた後でも番号がそこに格納されていることに気付いたとき、その変数を最終的なView Controllerに渡して、画像もそこに設定できるようにすることが問題でした。

detailviewcontroller.m

    -(void)prepareForSegue:(UIStoryboardSegue *) segue sender:(id)sender {
        ImageViewController *ivc = (ImageViewController *) [segue destinationViewController];
        ivc.bighornZoneNumber = _bighornZoneNumber;

    }
于 2013-07-29T18:40:15.803 に答える