我正在使用默认选择规则的UICollectionView
(仅限单个选择)。在我的自定义UICollectionViewCell
课程中,我已经覆盖了isSelected
,如此:
override var isSelected: Bool {
didSet {
self.backgroundColor = isSelected ? UIColor.gray : UIColor.white
}
}
我还为我的视图控制器isSelected
中的一个特定单元格设置了collectionView(_:cellForItemAt:)
,因为由于某种原因,该集合的selectItem()
方法并不是cellForItemAt
。在isSelected
中工作。
这使我能够确保选择了这一个单元格,并且在整个视图中实际显示其集合之前已经更改了它的背景,但它产生了一个奇怪的问题。
当我开始点击其他收集单元并选择它们时,我从开始选择的一个单元格的背景颜色设置为白色。
然而,当我继续通过点击它们来按顺序选择不同的单元格时,将它们的背景颜色切换为白色就像预期一样,同时我在集合期间设置isSelected
的一个单元格&#39 ; s的初始种群仍然是灰色的,除非我特意点击它,然后在另一个细胞中轻拍它。
任何人都可以帮我弄明白这是为什么吗?当我点击我在false
中设置了isSelected
属性的小区以外的其他小区时,为什么不将cellForItemAt
设置为collectionView:didDeselectItemAtIndexPath:
?
修改:我尝试实施isSelected
,但它根本没有触发。因此,一方面,i was succesfull in ruinning rake db:dump
sudo gem install mysql
rake db:create
the problem i am facing is while running rake db:schema:load
i am getting the following error while running the above command
ActiveRecord::StatementInvalid: Mysql2::Error: Cannot delete or update a parent row: a foreign key constraint fails: DROP TABLE `advance_salaries` CASCADE
/home/vh/.rvm/gems/ruby-2.2.1/gems/mysql2-0.3.21/lib/mysql2/client.rb:80:in `_query'
/home/vh/.rvm/gems/ruby-2.2.1/gems/mysql2-0.3.21/lib/mysql2/client.rb:80:in `block in query'
/home/vh/.rvm/gems/ruby-2.2.1/gems/mysql2-0.3.21/lib/mysql2/client.rb:79:in `handle_interrupt'
/home/vh/.rvm/gems/ruby-2.2.1/gems/mysql2-0.3.21/lib/mysql2/client.rb:79:in `query'
属性是明确设置的,因为该一个单元格的背景变为灰色,但另一方面,该集合似乎没有将该单元格视为已选中
答案 0 :(得分:0)
在您编辑问题时,您可以使用此方法。
// change background color when user touches cell
func collectionView(_ collectionView: UICollectionView, didHighlightItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath)
cell?.backgroundColor = UIColor.gray
}
// change background color back when user releases touch
func collectionView(_ collectionView: UICollectionView, didUnhighlightItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath)
cell?.backgroundColor = UIColor.white
}