【问题标题】:Xcode UIRefreshControl on UIViewUIView 上的 Xcode UIRefreshControl
【发布时间】:2013-12-18 15:04:12
【问题描述】:

我正在构建一个需要能够通过拉取刷新的应用程序,然后重新运行 ViewDidLoad。 所以我知道我可以使用 UIRefreshControl,但我只能找到在 UITableViewController 中使用的代码。 有没有人知道如何在 UIView 中而不是在 UITableView 中使用 UIRefreshControl。 提前致谢。

【问题讨论】:

    标签: xcode uiview uirefreshcontrol


    【解决方案1】:

    试试这个……

    [myView setNeedsDisplay];
    

    这将重新加载您的视图控制器。你可以把它放在一个方法中,并在拉动刷新期间调用它……希望这对你有帮助。 快乐编码;)

    【讨论】:

      【解决方案2】:

      很容易: 将控件保留为成员或属性:

      UIRefreshControl *_refreshControl;
      

      将此添加到您的 viewDidLoad 方法中:(只需将控件添加到您的 tableView。确保 tableView 不是 nil of course)。

       _refreshControl = [[UIRefreshControl alloc] init];
      [_refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
      [_tableView insertSubview:_refreshControl atIndex:0];
      

      实现刷新方法:

      - (void)refresh:(UIRefreshControl *)refreshControl {
         [self reloadData];
          //Don't forget to stop the refreshing animation after data reloads.
        [_refreshControl endRefreshing];
      }
      

      【讨论】:

      • 我知道这一点,但问题是,我没有使用 TableView,所以代码不起作用:(...
      • 对不起,但你也可以在没有 UITableViewController 的情况下使用它。尝试添加一个空的 tableView 作为子视图并使用相同的代码。
      【解决方案3】:

      UIRefreshControl 不能在没有表格的情况下使用。 the documentation 中的这条注释特别警告不要这样使用:

      注意: 因为刷新控件是专门为在由表视图控制器管理的表视图中使用而设计的,所以在 不同的上下文可能会导致未定义的行为。

      因此,尽管可以使控件工作,但您确实不应该在没有表格的情况下使用它。滚动您自己的刷新控件是更好的解决方案。

      更好的是,尝试设计您的应用,使用户无需刷新视图。应用程序应该知道何时有新数据可用。让用户刷新的唯一借口是,如果自动这样做会以某种方式使用户感到困惑或使应用程序更难使用。

      【讨论】:

      • "应用应该知道什么时候有新数据可用。"哦真的吗?感谢您提供有关 UIRefreshControl 的信息,但您的编辑 cmets 还差得很远。如果这是真的,为什么几乎所有来自 Apple 的主要应用程序都有刷新控件来获取更新的数据?此外,我认为大多数用户都喜欢拥有这种控制来刷新他们的数据。我知道我知道。
      • @Harris 也许只是意见不同,但总的来说,我认为无需用户干预即可始终保持最新状态的应用程序比用户必须采取措施获取数据的应用程序要好不陈旧。你能想象一个股票行情应用程序或一个用户必须要求最新数据的天气应用程序吗?在没有明确的用户操作的情况下刷新可能并不总是可取,但在有意义的情况下会更好。至于 Apple 的应用程序:当我在 Mac 上的 Pages 文稿中创建新文档时,它或多或少会立即显示在我的 iPad 上——无需刷新。
      猜你喜欢
      • 2016-07-28
      • 2012-09-18
      • 2013-07-29
      • 1970-01-01
      • 2013-03-18
      • 2011-07-16
      • 2012-08-07
      • 2012-08-26
      • 1970-01-01
      相关资源
      最近更新 更多