新しいUIRefreshControl
をxcodeに実装する方法の簡単な例はありますか?ツイートを表示するUITableViewController
があり、プルダウンして更新できるようにしたい。
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];
を呼び出して更新制御を停止します。
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];
}
ここでプルダウンして更新する方法
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];
}
_