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 に「Refreshing」のドロップダウン リスト オプションが表示されます。それを「有効」に設定します。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];
}
プルダウンとリフレッシュの方法
UITableViewController.hで、グローバル宣言を追加 UIRefreshControl *refreshControl;
して
メソッドを作成します-(void) refreshMyTableView;
およびUITableViewController.mviewDidLoad
の
//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];
}