181

UIViewController内のUITableViewにプルして更新する機能を実装しようとしています。UITableViewをViewControllerの小さなサブビューにし、その上に他のものを追加したいので、UITableViewControllerを使用できません。これは可能だと思いますが、誰かがそれの実装を見たことがありますか?

4

6 に答える 6

469

UITableViewを使用せずに、リフレッシュコントロールを直接に追加します。UITableViewController

override func viewDidLoad() {
    super.viewDidLoad()
    let refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action: #selector(refresh(_:)), for: .valueChanged)

    if #available(iOS 10.0, *) {
        tableView.refreshControl = refreshControl
    } else {
        tableView.backgroundView = refreshControl
    }
}

@objc func refresh(_ refreshControl: UIRefreshControl) {
    // Do your job, when done:
    refreshControl.endRefreshing()
}
于 2013-02-21T19:29:18.317 に答える
12

Objective-C

これは、テーブルビューの更新にプルを実装する方法です。コレクションビューの場合と同じです。テーブルビューの割り当てをコレクションビューに置き換えるだけです。

UITableView *tableViewDemo  =  [[UITableView alloc]init];
tableViewDemo.frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height);
tableViewDemo.dataSource =  self;
tableViewDemo.delegate =  self;
[self.view addSubView: tableViewDemo];

UIRefreshControl *refreshController = [[UIRefreshControl alloc] init];
[refreshController addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
[tableViewDemo addSubview:refreshController];

#pragma mark - Handle Refresh Method

-(void)handleRefresh : (id)sender
{
   NSLog (@"Pull To Refresh Method Called");
   [refreshController endRefreshing];
}
于 2016-08-09T09:05:44.097 に答える
4

@berikのこのソリューションは正常に機能しますが、UIControllerはUITableViewControllerの上に表示されます。それを修正する方法は、この変更を行うことです。

override func viewDidLoad() {
    let refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action: "refresh:", forControlEvents: .ValueChanged)
    tableView.backgroundView = refreshControl // <- THIS!!!
}

func refresh(refreshControl: UIRefreshControl) {
    // Do your job, when done:
    refreshControl.endRefreshing()
}
于 2015-11-04T14:19:44.023 に答える
3

UIViewControllerと単純なテーブルビューを使用してEGORefreshTableHeaderViewを実装しました。トリックは、テーブルビュー自体がスクロールビューから継承しているように見える場合、EGOがスクロールビューをパラメーターとして受け取る場所にあることです。

それといくつかの追加の接続が必要なだけです:)

お役に立てれば。

于 2012-04-24T03:58:37.020 に答える
-1

viewControllerのloadViewメソッド内にUIRefreshControlを作成すると、すべてが正常に機能するようです。UIRefreshControlは正常に動作します。iOS7.1およびiOS8.2でテスト済み

于 2015-03-31T06:44:30.463 に答える
-1

ODRefreshControlを使用することになりました。上記のようなハックは必要なくtableView.backgroundView = refreshControl、ほぼ同じように機能し、見栄えの良いUIを提供します。

于 2017-05-25T02:31:48.000 に答える