34

時折、テーブル ビューが更新するサービスに接続されないことがあります。その場合、UIRefreshControl を存在させたくありません。

viewDidLoad に追加した後、特定の状況下でsetEnabled:andを使用して非表示にしようとしましsetHidden:たが、どちらも機能しないようです。

4

13 に答える 13

40

テーブル ビュー コントローラのrefreshControlプロパティを nil に設定してみてください。

于 2013-10-20T17:32:31.827 に答える
10

これを行うにはいくつかの方法があります。最善の方法は、viewDidLoad メソッドで次のようにチェックすることだと思います。

if (condition){
 //attach refreshControl
}

これが不可能な場合は、更新を非表示にする場所にこのコードを配置するのが最善の方法です (if 条件の viewWillAppear メソッドで考えます)。

//End refresh control
[self.refreshControl endRefreshing];
//Remove refresh control to superview
[self.refreshControl removeFromSuperview];
于 2013-10-29T10:08:50.630 に答える
9

これを試して:

[self.refreshControl removeFromSuperview];
self.refreshControl = nil;
于 2013-10-23T18:55:09.073 に答える
0

私はこのように解決しました:

-(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];
}
于 2015-06-04T14:55:45.903 に答える
0
[refreshControl setTintColor:[UIColor clearColor]];

また、次のようなこともできます。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.y < 0)
        scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, 0);
}
于 2013-10-23T18:51:03.540 に答える
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()
    }
  }
于 2021-03-23T05:27:31.640 に答える