2016-02-12 167 views
15

我用下面的代碼在UICollectionViewController拉在UICollectionView刷新視圖控制器

override func viewDidLoad() {    

    self.collectionView!.alwaysBounceVertical = true 
    let refresher = UIRefreshControl() 
    refresher.addTarget(self, action: "refreshStream", forControlEvents: .ValueChanged) 

    refreshControl = refresher 
    collectionView!.addSubview(refreshControl!) 
} 

func refreshStream() { 

    print("refresh") 
    self.collectionView?.reloadData() 

    refreshControl?.endRefreshing() 

} 

現在我需要它有UICollectionView工作UIViewController內,我現在用Google搜索了一個小時,但不能得到它加工。 我感謝任何幫助。

+0

是不是工作? http://stackoverflow.com/questions/14678727/uirefreshcontrol-on-uicollectionview-only-works-if-the-collection-fills-the-heig – markov

+0

主要代碼是客觀的C和迅速的評論讓我很多問題: –

+0

使用未解析的標識符'Const' –

回答

9

從故事板中,您需要使用集合視圖對象中的Ctrl + Drag將集合視圖鏈接到相應的控制器文件。它需要通過@IBOutlet鏈接。另外,您應該從集合視圖中Ctrl + Drag拖動到故事板上的視圖控制器對象,然後選擇「數據源和委託」,以便集合視圖正確鏈接。

讓我知道這是否有幫助,或者如果我誤解了你的情況。

+0

地獄呀!謝謝你。該出口點擊它。謝謝! –

+0

希望你越來越多的票!偉大的! –

11
var refreshControl:UIRefreshControl! 

override func viewDidLoad() { 
    super.viewDidLoad() 
     self.refreshControl = UIRefreshControl() 
     self.refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh") 
    self.refreshControl.addTarget(self, action: #selector(refresh), forControlEvents: UIControlEvents.ValueChanged) 
     collectionView!.addSubview(refreshControl) 
} 

func refresh(sender:AnyObject) 
    { 
    //DO 
    } 
+0

你的代碼希望我在「ValueChanged」collectionView中輸入分號!「 ---->連續的語句必須用';'隔開 –

+0

@ AliAB做:) –

+0

這是正確的答案 –

30

新SWIFT代碼調用中的操作方法改變你可以做重寫這樣

@IBOutlet weak var collectionView: UICollectionView! 

var refresher:UIRefreshControl! 

override func viewDidLoad() { 

    super.viewDidLoad() 

    self.refresher = UIRefreshControl() 
    self.collectionView!.alwaysBounceVertical = true 
    self.refresher.tintColor = UIColor.red 
    self.refresher.addTarget(self, action: #selector(loadData), for: .valueChanged) 
    self.collectionView!.addSubview(refresher) 
} 

func loadData() { 
    //code to execute during refresher 
     . 
     . 
     . 
    stopRefresher()   //Call this to stop refresher 
} 

func stopRefresher() { 
    self.refresher.endRefreshing() 
} 
+0

謝謝,但「var refreshControl:UIRefreshControl!」需要更改爲「var refresher:UIRefreshControl!」 –

+4

而不是'''addSubview(刷新)'',swift3將這個複習添加到集合的方法是: '''self.collectionView!.refreshControl = refresher self.collectionView!.refreshControl.beginRefreshing() self.collectionView!.refreshControl.endRefreshing()''' – KingChintz

+1

@KingChintz collectionView.refreshControl僅適用於iOS10。 addSubview適用於更多版本。 –