有人有如何在Xcode中实现新的UIRefreshControl
的简短示例吗? 我有一个显示推文的UITableViewController
,想要能够下拉刷新。
有人有如何在Xcode中实现新的UIRefreshControl
的简短示例吗? 我有一个显示推文的UITableViewController
,想要能够下拉刷新。
如果你有一个UITableViewController
,你可以在viewDidLoad
中设置它:
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh)
forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
然后在这里可以进行刷新操作:
-(void)refresh {
// do something here to refresh.
}
刷新完成后,请调用[self.refreshControl endRefreshing];
停止刷新控件,正如rjgonzo所指出的那样。
你也可以在Interface Builder中进行配置。虽然它目前的工作方式只能为您节省几行代码。
选择TableViewController场景,在属性检查器中,您将找到一个名为“Refreshing”的下拉列表选项。将其设置为“Enabled”。您会注意到在视图控制器层次结构中添加了一个“Refresh Control”(您不会看到任何东西被可视地添加到场景本身)。奇怪的是,在将刷新控件连接到IBAction(值更改事件)之后,事件似乎没有被触发。我猜这是个错误(?),但同时启用"正在刷新"会创建UIRefreshControl对象并将其分配给视图控制器的refreshControl属性。完成这些操作后,您可以将事件处理行添加到viewDidLoad方法中:
[self.refreshControl addTarget:self action:@selector(refreshView:) forControlEvents:UIControlEventValueChanged];
在你的refreshView:方法中,你可以完成一些工作,然后停止刷新动画:
- (void)refreshView:(UIRefreshControl *)sender {
// Do something...
[sender endRefreshing];
}
-endRefreshing
,因为这样您的 UIRefreshControl
将在执行“弹跳”动画后立即消失。 - Dave DeLong这是如何下拉并刷新的方法
在你的 UITableViewController.h 文件中添加 UIRefreshControl *refreshControl;
和 -(void) refreshMyTableView;
方法的全局声明
在 UITableViewController.m 文件的 viewDidLoad
中
//initialise the refresh controller
refreshControl = [[UIRefreshControl alloc] init];
//set the title for pull request
refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"pull to Refresh"];
//call he refresh function
[refreshControl addTarget:self action:@selector(refreshMyTableView)
forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
带有刷新日期和时间的刷新函数
-(void)refreshMyTableView{
//set the title while refreshing
refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"Refreshing the TableView"];
//set the date and time of refreshing
NSDateFormatter *formattedDate = [[NSDateFormatter alloc]init];
[formattedDate setDateFormat:@"MMM d, h:mm a"];
NSString *lastupdated = [NSString stringWithFormat:@"Last Updated on %@",[formattedDate stringFromDate:[NSDate date]]];
refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:lastupdated];
//end the refreshing
[refreshControl endRefreshing];
}