42

UIRefreshControl新しいものをxcodeに実装する方法の短い例はありますか? ツイートを表示するが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 に「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];
}
于 2012-09-27T18:40:12.303 に答える
18

プルダウンとリフレッシュの方法

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

}
于 2012-10-17T06:57:29.073 に答える