首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIRefreshControl问题

UIRefreshControl问题
EN

Stack Overflow用户
提问于 2012-10-10 01:11:13
回答 5查看 13.1K关注 0票数 6

我正在尝试在我的应用程序中实现UIRefreshControl。我有一个xib文件,我向空的nib文件添加了一个UITableViewController,并将刷新属性设置为"enabled“。此外,我还向viewDidLoad添加了代码和自定义刷新方法。问题是我有一个错误,我不能找到我的对象的任何信息,我得到“viewDidLoad 'refreshControl‘on....in viewDidLoad on type ViewController

代码语言:javascript
复制
- (void)viewDidLoad{

[super viewDidLoad];

self.myTableView =
[[UITableView alloc] initWithFrame:self.view.bounds
                           style:UITableViewStyleGrouped];

self.myTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth |
                                  UIViewAutoresizingFlexibleHeight;

self.myTableView.delegate = self;
self.myTableView.dataSource = self;

[self.view addSubview:self.myTableView];

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

refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"];
[refresh addTarget:self action:@selector(refreshView:) forControlEvents:UIControlEventValueChanged];

self.refreshControl = refresh;

}

-(void)refreshView:(UIRefreshControl *)refresh {

refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Refreshing data..."];

// custom refresh logic would be placed here...

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM d, h:mm a"];
NSString *lastUpdated = [NSString stringWithFormat:@"Last updated on %@",
                                [formatter stringFromDate:[NSDate date]]];

refresh.attributedTitle = [[NSAttributedString alloc] initWithString:lastUpdated];
[refresh endRefreshing];

}

我不知道为什么这个属性不是available....what,我错过了吗?

看起来我需要在我的ViewController.h文件中继承UITableViewController。如果我在那里已经有了UITableView,我如何从两者继承呢?如果我将代码从ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>更改为ViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource>,则会得到一个错误:

代码语言:javascript
复制
    error: NSInternalInconsistencyException', 
    reason: '-[UITableViewController loadView] loaded the "ViewController_iPhone" nib but didn't get a UITableView.'
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-10 02:25:55

您可以将UIRefreshControl作为子视图添加到UITableView中。

代码语言:javascript
复制
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
[self.myTableView addSubview:refreshControl];

根据戴夫的评论,这可能会在未来版本的iOS中中断。因此,请在使用它时小心,并尝试引发关于这一点的bug report to apple

更好的方法是添加UITableViewController作为ChildViewControllerself,然后添加tableViewController.tableView作为self.view的子视图。你不需要做任何修改就能让它以这种方式工作。

代码语言:javascript
复制
[self addChildViewController:tableViewController];
[self.view addSubview:tableViewController.tableView];

您可以相应地定义tableView的框架。使用这种方法,UIRefreshControl的工作方式应该与UITableViewController的工作方式相同。`

票数 11
EN

Stack Overflow用户

发布于 2012-10-15 15:36:53

要记住的事情:

  • UIRefreshControl仅用于UITableViewController,因此您的类应该是UITableViewController.
  • UITableViewController的子类具有属性refreshControl,您应该分配一个UIRefreshControl并将其设置为该属性。

例如:

代码语言:javascript
复制
UITableViewController *tableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];

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

[refreshControl addTarget:self action:@selector(refreshControlAction:) forControlEvents:UIControlEventValueChanged];

tableViewController.refreshControl = refreshControl;
票数 5
EN

Stack Overflow用户

发布于 2013-09-13 23:34:26

所有这些都是做简单事情的复杂方法。

您不需要添加刷新控件,也不需要在viewController中声明刷新控件。添加pull-to-refresh是一个两步过程。

步骤1:在你的故事板中,进入你的tableViewController,在上面写着“正在刷新”的地方,选择“启用”。

步骤2:将以下代码添加到viewDidLoad中的tableViewController.m文件中:

代码语言:javascript
复制
[self.refreshControl addTarget:self
                            action:@selector(refresh)
                  forControlEvents:UIControlEventValueChanged];

这就是整个过程,除了在-refresh方法中做一些事情之外。当您希望它停止刷新时,调用[self.refreshControl endRefreshing];

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12805003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档