42

有没有人有一个简短的例子来说明如何在UIRefreshControlxcode 中实现新的。我有一个UITableViewController显示推文,希望能够下拉和刷新。

4

3 回答 3

68

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 所指出的那样。

于 2012-09-26T17:19:34.170 回答
32

您也可以在 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];
}
于 2012-09-27T18:40:12.303 回答
18

在这里你如何下拉和刷新

在你的UITableViewController.h添加 UIRefreshControl *refreshControl;-(void) refreshMyTableView;方法全局声明

viewDidLoadUITableViewController.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];

}
于 2012-10-17T06:57:29.073 回答