我在一个单独的视图上有一个UICollectionView让我们说" dashboardView"部分代码在下面给出,
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。我只是不希望uicollectionview在完成viewdidload调用时加载。我宁愿在点击按钮时加载此collectionview。我知道我可以通过使用collectionview.reloadData()重新加载它,但我应该如何在第一次加载时停止它。 任何帮助都会很明显。
答案 0 :(得分:0)
您可以尝试此解决方案。
调用viewdidload委托方法时,不要填充项目。
a#links:link {
color: red;
text-decoration: none
}
a#links:visited {
color: goldenrod;
text-decoration: none
}
a#links:hover {
color: maroon;
text-decoration: none;
font-variant: small-caps
}
点击按钮,点击项目和集合 view.reloadData()。
这应该有用。
答案 1 :(得分:0)
从viewdidload中删除代码,使其在开头不加载。添加一个按钮并将其与按钮单击事件连接。在click事件中添加代码以加载uicollectionview。
试试这段代码:
class ViewController : UIViewController
{
override func viewDidLoad() {
super.viewDidLoad()
}
}
@IBAction func buttonPressed(sender: AnyObject) {
graphicalDashBoardView = DashBoardView.instanceFromNib() as! DashBoardView
}
答案 2 :(得分:0)
不是说它优雅,但你可以做一个
var renderCollection: bool = false
并在您的numberOfSectionsInCollectionView和numberOfItemsInSection函数中添加
if !renderCollection return 0
直到你想要加载集合的那一刻
renderCollection = true ; collectionView.reloadData();