2016-02-12 51 views
0

我有一個單獨的視圖UICollectionView讓說:「dashboardView」的部分代碼如下給予,停止UICollectionView在初始化

class DashBoardView: UIView 
{ 
@IBOutlet weak var collectionView: UICollectionView! 
    override func awakeFromNib() { 
     collectionView.dataSource=self 
     collectionView.delegate=self 
     let nibLineChart = UINib(nibName: "GraphCell", bundle: nil) 
     collectionView.registerNib(nibLineChart, forCellWithReuseIdentifier:lineChartIdentifier) 
    } 
} 

現在,這個觀點在一個UIViewController包埋和示例代碼得到下述,

class ViewController : UIViewController 
{ 
override func viewDidLoad() { 
     super.viewDidLoad() 
     graphicalDashBoardView = DashBoardView.instanceFromNib() as! DashBoardView 
     } 

} 

現在它做什麼,一旦在viewDidLoad中調用完成它試圖渲染內部視圖的UIcollectionView並調用cellForItemAtIndexPath。我只是不想在完成viewdidload調用時加載uicollectionview。我寧願按下按鈕加載此collectionview。我知道我可以重新加載它通過使用collectionview.reloadData()但我應該如何停止它的第一次加載。 任何幫助將是可觀的。

+0

我能問你爲什麼需要這個?你想達到什麼目的? (另外,我想如果你不把它添加到視圖層次結構中,它將不會加載數據) – Raspu

回答

0

你可以試試這個解決方案。

調用viewdidload委託方法時,不要填充項目。

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return self.items.count 
} 

在按鈕自來水填寫的項目和收集view.reloadData()

這應該工作。

0

從您的viewdidload中刪除代碼,以便在開始時不加載代碼。添加一個按鈕並用按鈕點擊事件連接它。點擊事件內部添加代碼以加載uicollectionview。

試試這個代碼:

class ViewController : UIViewController 
{ 
    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

} 

@IBAction func buttonPressed(sender: AnyObject) { 
    graphicalDashBoardView = DashBoardView.instanceFromNib() as! DashBoardView 
} 
0

不是說這是優雅的,但你可以做一個

var renderCollection: bool = false

,並在您numberOfSectionsInCollectionView和numberOfItemsInSection功能添加

if !renderCollection return 0

,直到那一刻你想要的集合加載時,你會怎麼做

renderCollection = true ; collectionView.reloadData();