2016-02-12 111 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();