0

カルーセル コントロール (iCarousel) を表示するビュー コントローラーがあります。ビューが正しくレンダリングされ、カルーセルが表示されます。その直後に、ユーザーが特定の条件に同意できるようにするモーダルが表示されます。彼らが同意したら、カルーセル コントロールを含むビュー コントローラーを更新する必要があります。基本的に、カルーセルをランダムなインデックスに回転させたいと思います。

- (IBAction)accept:(id)sender
{
    NewsViewController *newsViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"NewsStoryboard"];

    [newsViewController loadNews];  
    [newsViewController.view setNeedsDisplay]; 



    [self dismissViewControllerAnimated:YES completion:nil];
}

上記のコードは loadNews を呼び出してフェッチしますが、ビューは更新されません。

4

2 に答える 2

2

カルーセルに何が起こるかは、モーダルView Controllerではなく、実際にはそれを管理するView Controller次第です。モーダル コントローラーにその処理を実行させ、収集したデータを親に返します。親 (この場合、カルーセルのコントローラー) は、そのデータを見て、次に何をする必要があるかを判断できます (たとえば、更新)。

于 2013-04-16T16:56:14.493 に答える
0

問題は次の行です。

    NewsViewController *newsViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"NewsStoryboard"];

これは古いビュー コントローラーではありません。これは、そのビュー コントローラーの新しい未使用のコピーです。モーダルView Controllerから既存のView Controllerに戻る通信回線を作成する必要があります。

これを行う一般的な方法は、モーダル ビュー コントローラーの作成時に設定するデリゲートを使用することです。Xcode ユーティリティ テンプレートを見ると、このアーキテクチャが示されていることがわかります。元のビュー コントローラーは、モーダル ビュー コントローラーのデリゲートとして自身を設定するため、モーダル ビュー コントローラーは元のビュー コントローラーが閉じられたときに元のビュー コントローラーと対話できます。

これは非常に重要なことであり、私は本で詳しく説明しています。

http://www.apeth.com/iOSBook/ch19.html#_presented_view_controller

于 2013-04-16T16:56:17.150 に答える