1. ホーム
  2. オブジェクティブC

[解決済み】UITableViewControllerを使用しないUIRefreshControl

2022-03-29 09:59:15

質問

ただ、すぐに可能とは思えないので、ちょっと聞きたいのですが、新しいiOS 6を活用する卑劣な方法はないでしょうか? UIRefreshControl クラスを使用せずに UITableViewController サブクラス?

私がよく使うのは UIViewController と共に UITableView サブビューに準拠し UITableViewDataSourceUITableViewDelegate を使用するのではなく UITableViewController をそのまま使用します。

解決方法は?

直感で、DrummerBさんのインスピレーションで、単純に UIRefreshControl インスタンスをサブビューとして UITableView . そして、それは魔法のようにちょうど動作します

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

これは UIRefreshControl を使わなくても、テーブルビューの上に表示され、期待通りに動作します。 UITableViewController :)


EDIT: 上記はまだ動作しますが、何人かの方が指摘されているように、この方法でUIRefreshControlを追加すると、若干のquot;stutter"が発生することがあります。その解決策は、UITableViewControllerをインスタンス化し、UIRefreshControlとUITableViewをそれに設定する、つまり、です。

UITableViewController *tableViewController = [[UITableViewController alloc] init];
tableViewController.tableView = self.myTableView;

self.refreshControl = [[UIRefreshControl alloc] init];
[self.refreshControl addTarget:self action:@selector(getConnections) forControlEvents:UIControlEventValueChanged];
tableViewController.refreshControl = self.refreshControl;