- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个单元格,其中包含一个空的 UIImageView 和一个嵌套在包含一行图像的 collectionView 中。我创建了一个 didSelect 函数,我想突出显示所选行并在空 UIImageView 中显示它的图像。
我尝试了 reloadData 函数,但应用程序崩溃了。我在没有 reloadData 函数的情况下尝试了它,并且索引路径的项目仅突出显示。
class DisplayImageCell: UICollectionViewCell, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
private let displayCell = "DisplayImageCell"
let imageContainer: UIImageView = {
let imageContainer = UIImageView()
imageContainer.clipsToBounds = true
imageContainer.backgroundColor = UIColor(patternImage: (UIImage(imageLiteralResourceName: "ic_person_outline_white_2x").withRenderingMode(.alwaysTemplate)))
imageContainer.isUserInteractionEnabled = true
imageContainer.translatesAutoresizingMaskIntoConstraints = false
return imageContainer
}()
let pictureCollection: UICollectionView = {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.minimumLineSpacing = 5
layout.minimumInteritemSpacing = 10
let imageContainer = UICollectionView(frame: .zero, collectionViewLayout: layout)
imageContainer.showsHorizontalScrollIndicator = false
imageContainer.clipsToBounds = true
imageContainer.tintColor = .yellow
imageContainer.isUserInteractionEnabled = true
imageContainer.translatesAutoresizingMaskIntoConstraints = false
return imageContainer
}()
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .clear
pictureCollection.dataSource = self
pictureCollection.delegate = self
pictureCollection.register(ImageCell.self, forCellWithReuseIdentifier: displayCell)
addSubview(imageContainer)
NSLayoutConstraint.activate([
imageContainer.topAnchor.constraint(equalTo: topAnchor),
imageContainer.heightAnchor.constraint(equalTo: heightAnchor, multiplier: 0.80),
imageContainer.widthAnchor.constraint(equalTo: widthAnchor)
])
addSubview(pictureCollection)
NSLayoutConstraint.activate([
pictureCollection.topAnchor.constraint(equalTo: imageContainer.bottomAnchor, constant: 10),
pictureCollection.bottomAnchor.constraint(equalTo: bottomAnchor),
pictureCollection.widthAnchor.constraint(equalTo: widthAnchor)
])
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 7
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: displayCell, for: indexPath) as! ImageCell
let imageOption = ImageOption(rawValue: indexPath.row)
cell.iconImageView.image = imageOption?.icon()
return cell
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: pictureCollection.frame.height, height: pictureCollection.frame.height)
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
updateCell(having: indexPath, selected: true)
}
func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
updateCell(having: indexPath, selected: false)
}
func collectionView(_ collectionView: UICollectionView, didHighlightItemAt indexPath: IndexPath) {
updateCell(having: indexPath, selected: true)
}
func collectionView(_ collectionView: UICollectionView, didUnhighlightItemAt indexPath: IndexPath) {
updateCell(having: indexPath, selected: false)
}
private class ImageCell: UICollectionViewCell {
let iconImageView: UIImageView = {
let iv = UIImageView()
iv.contentMode = .scaleAspectFit
iv.clipsToBounds = true
iv.translatesAutoresizingMaskIntoConstraints = false
iv.isUserInteractionEnabled = true
return iv
}()
override init(frame: CGRect) {
super.init(frame: .zero)
backgroundColor = .blue
addSubview(iconImageView)
NSLayoutConstraint.activate([
iconImageView.heightAnchor.constraint(equalTo: heightAnchor),
iconImageView.widthAnchor.constraint(equalTo: widthAnchor),
iconImageView.centerXAnchor.constraint(equalTo: centerXAnchor),
iconImageView.centerYAnchor.constraint(equalTo: centerYAnchor)
])
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
func updateCell(having indexPath: IndexPath, selected: Bool) {
let selectedBackgroundColor = UIColor(red: 41/255.0, green: 211/255.0, blue: 241/255.0, alpha: 1.0)
let defaultBackgroundColor = UIColor.blue
let imageSlot = DisplayImageCell()
let ep = EditProfileController()
if let cell = pictureCollection.cellForItem(at: indexPath) {
cell.contentView.backgroundColor = selected ? selectedBackgroundColor : defaultBackgroundColor
imageSlot.imageContainer.image = UIImage(named: "ThumbsUp")
ep.collectionView.reloadData()
}
}
}
预期的结果是空 ImageView 显示所选indexPath.row的图像。当我尝试重新加载 collectionView 时,发现一个 nil 值的 fatal error 。
最佳答案
如果您想在 imageContainer
中显示 Collection View 的数据源中选定的图像,您只需在 didSelectItemAt indexPath
中获取图像,就像在cellForItemAt indexPath
:
let imageOption = ImageOption(rawValue: indexPath.item)
然后
imageContainer.image = imageOption?.icon()
实际上没有必要调用reloadData()
,因为 Collection View 的数据源尚未更新。
关于swift - 使用 didSelect 方法在 viewDidLoad 后在 Cell 中显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57930744/
我正在学习 objective-c 教程,并注意到 viewDidLoad 中的代码放在 super viewDidLoad 下,而不是第一次调用 viewDidLoad。 代码放在viewDidLo
在Apple的scrollView示例中,他们没有这样称呼。我一直认为这是必须的。我为什么要这样调用它? 最佳答案 如果您要重写该方法,您仍然应该在 super 中调用该方法。即使父类(super c
这个问题已经有答案了: Why/when do we have to call super.ViewDidLoad? (6 个回答) 已关闭 4 年前。 override func viewDidLo
大家好,我有一个双 View Controller 。 我的 firstviewcontroller 有一个按钮,这个按钮发送 NSNotification,secontviewController
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Do I always have to call [super viewDidLoad] in the -v
我有一个关于子类化的问题。 我从我的第一个 View 开始:在我的 .h 文件中: @interface viewAController : UIViewController 在我的 .m 文件中:
我读到一篇文章说,当创建 UIViewController 类时,属性需要为零,然后 Storyboard 或在调用 viewDidLoad 时将其添加到值中。 它表示在构造对象时也无法初始化属性。
这是我当前的代码。我什至没有通过 viewDidLoad 方法覆盖,因为在它说 super viewdidload 的那一行它抛出错误 @interface for uitableview 为选择器
import UIKit class SecondViewController: UIViewController { @IBOutlet weak var labelA: UILabel!
我需要设置和存储一些可用于 View 的 NSUserDefaults 数据。这不适用于 viewDidLoad。 这可以做到吗? 在 viewDidLoad 之前我可以使用什么方法? 你会推荐什么?
当我向主视图 Controller 中的 viewDidLoad 添加方法时,我的 iPhone 应用程序崩溃了: #import "dbQuestionGetterViewController.h"
当用户切换到另一个程序然后再次返回时,原始程序的 View 将被另一个程序的新 View 替换。那么当用户切换回原来的程序时,viewDidLoad会被第二次调用吗? 我问这个是因为如果是这种情况,那
全部, 我正在从我的 applicationDidFinishLaunching 方法创建一个 windowController ... (void)applicationDidFinishLaunc
这个问题已经有答案了: Looking to understand the iOS UIViewController lifecycle (11 个回答) iPhone SDK: what is th
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 5年前关闭。 Improve this
我知道viewDidLoad在 UIViewController 期间可能会多次调用方法的生命周期。但这怎么可能?如何让它多次调用而不是直接调用它?我试过这样做: UIView *view = [
我在使用 iOS 时遇到了一点问题。我使用协议(protocol)在两个 View Controller 之间来回传递数据并手动切换 View 。我的问题是,当我关闭顶 View 时,不再调用底 Vi
我正在开发一款新应用程序,该应用程序主要用于组织网络内容中的信息。它将是一款用于监控道琼斯指数股息 yield 的金融应用程序。为此,需要执行几个步骤,但我现在正在执行第一步。我想选取道琼斯指数中的
我需要采用 viewDidLoad 方法中填充的变量来显示在连接到自定义单元格的标签上。我想做的是: 查找数据库中存储的用户盒子中的 SKU 使用SKU查找数据库中存储的产品详细信息 将产品详细信息存
我正在 viewDidLoad 中使用异步任务函数,根据返回的响应,我正在更改 View (颜色、文本...),但我有“错误”: 有时,当我更改 View 并返回 View 时,我的 View 背景没
我是一名优秀的程序员,十分优秀!