web-dev-qa-db-ja.com

UIRefreshControl iOS 6 xcode

新しいUIRefreshControlをxcodeに実装する方法の簡単な例はありますか?ツイートを表示するUITableViewControllerがあり、プルダウンして更新できるようにしたい。

42
Gareth

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.
}

更新が完了したら、rjgonzoによって指摘されているように、[self.refreshControl endRefreshing];を呼び出して更新制御を停止します。

68
danqing

Interface Builderでこれを設定することもできます。現在は動作していますが、数行のコードしか保存されません。

TableViewControllerシーンを選択すると、属性インスペクターに「更新」のドロップダウンリストオプションが表示されます。それを「有効」に設定します。 View Controller Hierarchyで、「Refresh Control」が追加されていることがわかります(シーン自体に視覚的に追加されたものは表示されません)。奇妙なのは、リフレッシュコントロールをIBAction(値変更イベント)に接続した後、イベントがトリガーされないように見えることです。これはバグだと思いますが(?)、その一方で、「Refreshing」を有効に設定すると、UIRefreshControlオブジェクトが作成され、View ControllerのrefreshControlプロパティに割り当てられます。それが完了したら、イベント処理行をviewDidLoadメソッドに追加できます。

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

RefreshView:メソッドで、いくつかの作業を行ってから、更新アニメーションを停止できます。

- (void)refreshView:(UIRefreshControl *)sender {
    // Do something...
    [sender endRefreshing];
}
32
J Shapiro

ここでプルダウンして更新する方法

ITableViewController.hに_UIRefreshControl *refreshControl;_および-(void) refreshMyTableView;メソッドのグローバル宣言を追加します

およびviewDidLoadの-​​ITableViewController.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];

}
_
18
iMeMyself