初始化时停止加载 UICollectionView
stop UICollectionView from loading while initializing
我在单独的视图上有一个 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。我只是不想在完成 viewdidload 调用时加载 uicollectionview。我宁愿在单击按钮时加载此 collectionview。我知道我可以使用 collectionview.reloadData() 重新加载它,但是我应该如何在第一次加载时停止它。
任何帮助将不胜感激。
您可以试试这个解决方案。
调用viewdidload委托方法时不填写项目
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.items.count
}
点击按钮填写项目 collection view.reloadData().
这应该有效。
从您的 viewdidload 中删除代码,这样它就不会在开始时加载。添加一个按钮并将其与按钮单击事件相关联。在点击事件中添加代码以加载 uicollectionview。
试试这个代码:
class ViewController : UIViewController
{
override func viewDidLoad() {
super.viewDidLoad()
}
}
@IBAction func buttonPressed(sender: AnyObject) {
graphicalDashBoardView = DashBoardView.instanceFromNib() as! DashBoardView
}
不是说它很优雅,但你可以做一个
var renderCollection: bool = false
并在您的 numberOfSectionsInCollectionView 和 numberOfItemsInSection 函数中添加
if !renderCollection return 0
直到你想要加载集合的那一刻你会做
renderCollection = true ; collectionView.reloadData();
我在单独的视图上有一个 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。我只是不想在完成 viewdidload 调用时加载 uicollectionview。我宁愿在单击按钮时加载此 collectionview。我知道我可以使用 collectionview.reloadData() 重新加载它,但是我应该如何在第一次加载时停止它。 任何帮助将不胜感激。
您可以试试这个解决方案。
调用viewdidload委托方法时不填写项目
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.items.count
}
点击按钮填写项目 collection view.reloadData().
这应该有效。
从您的 viewdidload 中删除代码,这样它就不会在开始时加载。添加一个按钮并将其与按钮单击事件相关联。在点击事件中添加代码以加载 uicollectionview。
试试这个代码:
class ViewController : UIViewController
{
override func viewDidLoad() {
super.viewDidLoad()
}
}
@IBAction func buttonPressed(sender: AnyObject) {
graphicalDashBoardView = DashBoardView.instanceFromNib() as! DashBoardView
}
不是说它很优雅,但你可以做一个
var renderCollection: bool = false
并在您的 numberOfSectionsInCollectionView 和 numberOfItemsInSection 函数中添加
if !renderCollection return 0
直到你想要加载集合的那一刻你会做
renderCollection = true ; collectionView.reloadData();