- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的UICollectionView
有一个UILabel
和一个UIImageView
,我认为它们并且工作得很好,如下所示:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell{
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("coffee_brand_cell", forIndexPath: indexPath) //as! AURCoffeeBrandCollectionViewCell
let imageView = cell.contentView.viewWithTag(1) as? UIImageView
imageView?.image = UIImage(named: ["coffee1","coffee2","coffee3","coffee3"][indexPath.row])
let name = cell.contentView.viewWithTag(2) as? UILabel
name?.text = coffeeName[indexPath.row] + String(indexPath.row)
name?.textColor = UIColor(red: 226.0/255.0, green: 170.0/255.0, blue: 119.0/255.0, alpha: 1.0)
name?.adjustsFontSizeToFitWidth = true
cell.backgroundColor = collectionView.backgroundColor
cell.layoutIfNeeded()
imageView?.layer.cornerRadius = (cell.frame.width - 40)/2.0
imageView?.layer.masksToBounds = true
return cell
}
但是我无法获取所选单元格的名称和图像,如下所示,
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let cell = collectionView.cellForItemAtIndexPath(indexPath)
if let name = cell?.contentView.viewWithTag(2) {
//Can't get into this.
}
}
}
单元格的 contentView subview 返回 0。
cell!.contentView.subviews
0 elements
更新:
cell.contentView.viewWithTag(2)
适用于 cellForItemAtIndexPath
,但不适用于 didSelectItemAtIndexPath
。但是 cell.viewWithTag(2)
可以工作。
为什么 contentView
的工作方式不同?
更新
将这两行插入到 didSelectItemAtIndexPath
print(" selected cell is \((cell?.viewWithTag(2) as! UILabel).text!)")
print(" selected cell is \((cell?.contentView.viewWithTag(2) as! UILabel).text!)")
输出:
selected cell is Kii Kenya0
fatal error: unexpectedly found nil while unwrapping an Optional value
项目可以在这里下载:Link
最佳答案
尝试使用这个
import UIKit
class CollectionUIViewController: UIViewController,UICollectionViewDataSource,UICollectionViewDelegate{
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
return 20
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("customCellIdentifier", forIndexPath: indexPath)
(cell.contentView.viewWithTag(1) as! UIImageView).image = UIImage(named: "Image")
(cell.contentView.viewWithTag(2) as! UILabel).text = "cell no \(indexPath.row)"
return cell
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
{
let selectedCell = collectionView.cellForItemAtIndexPath(indexPath)
print(" selected cell is \((selectedCell?.contentView.viewWithTag(2) as! UILabel).text!)")
}
}
关于ios - didSelectItemAtIndexPath 中的 cell.contentView.viewWithTag 与 cell.viewWithTag 的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33207155/
我的UICollectionView有一个UILabel和一个UIImageView,我认为它们并且工作得很好,如下所示: func collectionView(collectionView: U
我对函数 viewWithTag 有一个奇怪的行为。 我的 Storyboard看起来像这样:-viewController --UIScrollView1(应该是一个 UIView 但还没有改变)
我正在尝试创建一系列带有标签的标签,然后更新文本。但是,只有最后一个标签会被更新。如何更新所有标签或特定的标记标签? 此示例应创建 4 个标签,其中包含数字 1、2、3、4。然后应该用 A、B、C、D
我正在尝试使用标签名称显示单元格标签文本。在我的主 Storyboard的默认单元格中,我添加了一个标签并将标签名称添加为 70。我正在尝试使用以下方法加载该数据。没有显示出来。请帮我。 [Crop
我有一个函数包括以下行: var chanceLabel : UILabel? = self.view.viewWithTag(uni_tag) as? UILabel 我的 Storyboard的结
我有 3 个 UIImageView 作为缩略图,带有标签:1、2、3。 以下方法: - (IBAction)showImage:(UIGestureRecognizer *)sender { i
我通过 Storyboard设计了 tableView,在一个单元格中我有一个按钮和一个标签。按钮在 Storyboard上有标签 1 和标签在 Storyboard上有标签 2。在 cellForR
我对 viewWithTag 有疑问。我使用此代码以编程方式从我的 Storyboard 中调用 UIViewController。然后我想设置 2 个 imageView 并使用 viewWithT
如果我有以下 View 层次结构 UIView --- 顶层 View --UIButton --UIView ----UILabel ----UILabel -- 标签 = 1 如何从顶级 View
在 IB 中查看我有很多项目(包括 View 本身)。只有一项具有标签 0,但以下行适用于除标签 0 之外的任何 UITextBox。请注意,只有一个 UITextBox 具有标签 0,原因是: (U
static NSString *cellID = @"Cell Identifier"; UITableViewCell *cell = [tableView dequeueReusableCell
我在 Storyboard中有一个带有自定义单元格的表格 View 单元标识符是:MyCustomCellIdentifier 标签的框架是:{ { 15.0f, 178.0f }, { 280.0f
我有一个 UITableView,其中的单元格包含一个 TextView ...我最初使用它来设置它们,但使用的是 viewWithTag: UITableViewCell *cell = [tabl
例如, UIImageView *iconView = [cell.contentView viewWithTag:TestTag]; 我记得如果我不显式转换类型之前会有警告,但现在 Xcode 没有
我试图通过在按下 UIButton 时调用 viewWithTag 来重用标签。代码第一次执行时看起来没问题,但是由于第 7 行多次执行它是否会泄漏?从 superview、alloc 和 addSu
我目前正在使用 nibs,需要根据国家/地区以编程方式更改基于其标签的图像。我试过: vc.view.viewWithTag(8).image = UIImage(named:"image") 但它会
我正在尝试将 UIbutton 添加到特定的 StackView。 我想出的是 viewWithTag(2)?.addSubview(button) 这样实现有错吗?或者有什么更好的实现方法吗? 最佳
我有 6 行由自定义单元格组成的 tableView。 自定义单元格有一个 UILabel 和一个 UISwitch。在“cellForRowAtIndexPath:”方法中,我有: stat
我想隐藏 UILabel 但我无法将我的标签隐藏在 ViewDidLoad 之外或“在 ViewDidLoad 之内但在 for 循环之外”。在 for 循环内的 ViewDidLoad 中,我可以实
我开始了一个新项目,我想知道是否有人试验过哪个更有效,在 .h 文件中声明一个对象(例如 UIButton)或在 viewDidLoad 方法中创建对象并使用 viewWithTag: 方法在创建元素
我是一名优秀的程序员,十分优秀!