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

carousel 发生的事情应该取决于管理它的视图控制器,而不是模态视图控制器。让模态控制器做它的事情并将它收集到的任何数据返回给它的父级。然后父级(在本例中为轮播的控制器)可以查看该数据并决定下一步需要做什么(例如刷新)。

于 2013-04-16T16:56:14.493 回答
0

问题是这一行:

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

那不是旧的视图控制器;它是该视图控制器的一个新的、未使用的副本。您需要创建一条从模态视图控制器返回到现有视图控制器的通信线路。

执行此操作的典型方法是通过您在创建模式视图控制器时设置的委托。如果您查看 Xcode Utility 模板,您会发现它说明了这种架构。原始视图控制器将自己设置为模态视图控制器的委托,因此模态视图控制器能够在其被解除时与原始视图控制器对话。

这是一件非常重要的事情,我在书中详细讨论了它:

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

于 2013-04-16T16:56:17.150 回答