有没有人有一个简短的例子来说明如何在UIRefreshControl
xcode 中实现新的。我有一个UITableViewController
显示推文,希望能够下拉和刷新。
3 回答
viewDidLoad
如果你有一个,你可以在你的 中设置它UITableViewController
:
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 场景,在 Attributes Inspector 中,您会发现“刷新”的下拉列表选项。将其设置为“启用”。您会注意到在 View Controller Hierarchy 中添加了“刷新控件”(您不会看到任何视觉上添加到场景本身的内容)。奇怪的是,在将刷新控件连接到 IBAction(值更改事件)之后,该事件似乎没有被触发。我猜这是一个错误(?),但同时,将“刷新”设置为启用会创建 UIRefreshControl 对象并将其分配给视图控制器的 refreshControl 属性。完成后,您可以将事件处理行添加到 viewDidLoad 方法中:
[self.refreshControl addTarget:self action:@selector(refreshView:) forControlEvents:UIControlEventValueChanged];
在您的 refreshView: 方法中,您可以做一些工作,然后停止刷新动画:
- (void)refreshView:(UIRefreshControl *)sender {
// Do something...
[sender endRefreshing];
}
在这里你如何下拉和刷新
在你的UITableViewController.h添加 UIRefreshControl *refreshControl;
和
-(void) refreshMyTableView;
方法全局声明
并viewDidLoad
在UITableViewController.m
//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];
}