嵌入式tableview ios 6的刷新控制器

Posted

技术标签:

【中文标题】嵌入式tableview ios 6的刷新控制器【英文标题】:refresh controller for embedded tableview ios 6 【发布时间】:2013-03-29 20:28:37 【问题描述】:

您好,我目前在 UIViewController 中嵌入了 tableview。在表格视图中,我收集了 json 数据。我希望制作一个刷新控制器,因此每当用户下拉时,都会刷新 json 数据。

我试过下面的代码

- (void)viewDidLoad

[superviewDidLoad];

UIRefreshControl *refreshControl = [[UIRefreshControl alloc]
init];
[refreshControl addTarget:nil action:@selector(updateArray) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;



-(void) updateArray
[self.tableView reloadData];
[self.refreshControl endRefreshing];

我收到一条错误消息,提示在 ViewController 中找不到属性 refreshControl。

是因为我使用的是嵌入式 tableview 还是我做错了什么?

【问题讨论】:

此代码是否在您的UIViewController 或其他地方? 代码在UIViewController中 看起来刷新控制处理需要在 UITableViewController 中,而不是在 UIViewController 中。看看,也许,this tutorial。 我已经看过那个教程,我知道你需要 UITableViewController,所以我想知道是否有办法解决这个问题?因为我需要刷新 UIViewController 中的 tableview。 我使用EGOTableViewPullRefresh 在 ios 5 中实现了拉动刷新。 【参考方案1】:

您正在 viewDidLoad 方法中实例化 UIRefreshControl。 updateArray 方法看不到对该对象的引用。您需要将其设为属性或实例变量。

@property (strong, nonatomic) UIRefreshControl *refreshControl;

然后代替

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];

使用

refreshControl = [[UIRefreshControl alloc] init];

【讨论】:

如果您仍然遇到问题,您将不得不发布代码的更多详细信息。也许尝试将您的 addTarget: 方法更改为 self 而不是 nil。【参考方案2】:

您只能将 UIRefreshControl 添加到 UITableViewController 而不能添加到 UIViewController。 检查此答案以在 UIViewController 中使用 UIRefreshControl ,其中 UITableViewController 是子级。 https://***.com/a/14148118/1017099

【讨论】:

以上是关于嵌入式tableview ios 6的刷新控制器的主要内容,如果未能解决你的问题,请参考以下文章

ios MVVM实践 刷新网络请求+tableView展示数据

从 iOS 13 中的呈现模式拉动以刷新表格视图不起作用

iOS swift pull to refresh mixes with tableview

TableView 刷新和文本字段

如何更改模态视图 iOS 6 上的状态栏

删除 tableview 单元格并刷新视图控制器后刷新 tableview