時折、テーブル ビューが更新するサービスに接続されないことがあります。その場合、UIRefreshControl を存在させたくありません。
viewDidLoad に追加した後、特定の状況下でsetEnabled:
andを使用して非表示にしようとしましsetHidden:
たが、どちらも機能しないようです。
時折、テーブル ビューが更新するサービスに接続されないことがあります。その場合、UIRefreshControl を存在させたくありません。
viewDidLoad に追加した後、特定の状況下でsetEnabled:
andを使用して非表示にしようとしましsetHidden:
たが、どちらも機能しないようです。
テーブル ビュー コントローラのrefreshControl
プロパティを nil に設定してみてください。
これを行うにはいくつかの方法があります。最善の方法は、viewDidLoad メソッドで次のようにチェックすることだと思います。
if (condition){
//attach refreshControl
}
これが不可能な場合は、更新を非表示にする場所にこのコードを配置するのが最善の方法です (if 条件の viewWillAppear メソッドで考えます)。
//End refresh control
[self.refreshControl endRefreshing];
//Remove refresh control to superview
[self.refreshControl removeFromSuperview];
これを試して:
[self.refreshControl removeFromSuperview];
self.refreshControl = nil;
私はこのように解決しました:
-(void)updateUIWithAuthState:(BOOL)isAuthenticated {
self.loginButton.enabled = !isAuthenticated;
self.loginButton.tintColor = isAuthenticated ? [UIColor clearColor] : nil;
self.logoutButton.enabled = isAuthenticated;
self.logoutButton.tintColor = isAuthenticated ? nil : [UIColor clearColor];
self.tableView.userInteractionEnabled = isAuthenticated;
self.data = nil;
[self.tableView reloadData];
}
[refreshControl setTintColor:[UIColor clearColor]];
また、次のようなこともできます。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.y < 0)
scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, 0);
}
Xcode 12.IOS 14.4.1 でiOS_Mouseからこのソリューションを使用しようとしましたが、正しく動作しませんでした。これになるように微調整することができました。(これは を使用した私の使用例であることに注意してくださいUISegmentedControl
。別のテーブルがあり、そのうちの 1 つだけをプル ツー リフレッシュ機能を使用できるようにしたかったのです。
var refreshControl = UIRefreshControl()
@IBAction func vcLibFilterPressed(_ sender: UISegmentedControl) {
removeRefreshControl()
switch vcLibSegmentedControl.selectedSegmentIndex {
case 0: // Plan
enableDisableSegmentedControl()
vcLibTableView.reloadData()
case 1: // Tag
vcLibTableView.reloadData()
createRefreshControl()
default:
break
}
}
func createRefreshControl() {
refreshControl.addTarget(self, action: #selector(syncDropbox), for: .valueChanged)
refreshControl.tintColor = UIColor.red
refreshControl.attributedTitle = NSAttributedString(string: " ↓ Refresh ↓ ")
tableView.refreshControl = refreshControl
}
func removeRefreshControl() {
refreshControl.removeTarget(self, action: #selector(syncDropbox), for: .valueChanged)
tableView.refreshControl = nil
}
@objc func syncDropbox(refreshControl: UIRefreshControl) {
if vcLibSegmentedControl.selectedSegmentIndex == 1 {
// DO Internet Stuffs
// somewhere in your code you might need to call:
refreshControl.endRefreshing()
}
}