【问题标题】:Update UITableView when UIScrollView content changes当 UIScrollView 内容改变时更新 UITableView
【发布时间】:2014-09-20 13:37:20
【问题描述】:

我有 2 个 ViewController,每个都包含一个滚动视图(显示多个图表)和一个表格视图。 我想根据滚动视图中显示的当前图形更新表格视图内容。

滚动视图由一个单独的类“GraphScrollView”管理,其中 currentIndex 属性存储当前显示的图形。

问题是我不知道如何通知viewController currentIndex 发生了变化,以便它可以发送reloadData 方法来更新tableview。 我正在考虑在 GraphScrollView 类中发布通知并在 2 个 viewControllers 中添加一个观察者,但在这种情况下,两个 ViewControllers 都会被通知,而我只想通知当前活动视图的 viewController(因为两个 VC 应该是独立,还因为 2 个 viewController 可能有不同数量的图,因此 currentIndex 可能是两个 VC 之一的错误值。

谢谢, 科拉多

【问题讨论】:

    标签: ios objective-c uitableview uiviewcontroller uiscrollview


    【解决方案1】:

    我假设您可以在“活动视图”更改时将视图控制器设置为观察者并删除。

    您也可以创建一个委托协议并切换哪个视图控制器是委托,但我实际上发现这比通知更工作,没有特别的收获。

    【讨论】:

      【解决方案2】:

      您的问题不清楚如何在滚动视图中更改currentIndex。但是您始终可以在视图控制器中实现 UIScrollViewDelegate 以在滚动结束时获取更新:

      ...
      @implementation ViewController 
      ...
      - (void)viewDidLoad {
         ...
         self.graphScrollView.delegate = self;
         ... 
      
      }
      
      ...
      - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
      {
         if (self.graphScrollView.currentIndex == ???) {
             [self.tableView reloadData];
         }
      }
      ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多