我刚刚下载了新的 Xcode GM,在解决了大量错误之后,我的 swift 项目完美运行(耶!)。但是今天我尝试在 iOS 8 设备上安装该应用程序,现在我所有的表格和 Collection View 都破坏了该应用程序。麻烦来自这样的事情:
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("CollectionCellCB", forIndexPath: indexPath) as UICollectionViewCell
var pic = cell.contentView.viewWithTag(10) as UIImageView
pic.image = DisplayImage;
我已经仔细检查了我的 Storyboard,以确保我有一个带有该重用标识符的单元格和一个带有该标签的 uiimage View ,但它在这里和其他场景中都不起作用。 它在我的 iOS 7 设备上工作得很好,但在 iOS 8 上每次都会中断。我希望这是一个错误,但我不能确定。还有其他人遇到此问题或知道如何解决吗?
主要问题是,当我调用 viewWithTag 时,该函数返回 nil 而不是像在 iOS 7 和更早版本中那样返回对 View 的引用。
最佳答案
我遇到了同样的问题。有些单元格不显示任何内容是 iOS8。 viewWithTag
未返回 subview 。
似乎是单元格未正确创建且 subview 不存在。下面是两个具有不同标识符的单元格的内容 - 第一个已损坏,第二个正在运行:
(lldb) po [cell recursiveDescription]
<tSettingsViewCell: 0x7a5d7950; baseClass = UITableViewCell; frame = (0 0; 695 44); text = 'WiFi'; opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x7a5d7af0>>
| <_UITableViewCellSeparatorView: 0x7a5d77f0; frame = (15 43; 680 1); layer = <CALayer: 0x7a5d8500>>
(lldb) po [cell recursiveDescription]
<tSettingsViewCell: 0x7a430210; baseClass = UITableViewCell; frame = (0 0; 695 44); text = 'Server'; opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x7a4301e0>>
| <UITableViewCellContentView: 0x7a430170; frame = (0 0; 669 44); clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x7a429850>; layer = <CALayer: 0x7a430140>>
| | <UITableViewLabel: 0x7a430080; frame = (15 0; 645 44); text = 'Server'; clipsToBounds = YES; opaque = NO; layer = <_UILabelLayer: 0x7a430030>>
| | <UITextField: 0x7a42f980; frame = (495 8; 185 30); text = ''; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; tag = 200; layer = <CALayer: 0x7a42fce0>>
| <_UITableViewCellSeparatorView: 0x7a42ad10; frame = (15 43; 680 1); layer = <CALayer: 0x7a42aad0>>
| <UIButton: 0x7a42a870; frame = (677 16; 8 13); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x7a42a840>>
| | <UIImageView: 0x7a4295a0; frame = (0 0; 8 13); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x7a429660>>
Storyboard未使用自动布局。
我还没弄清楚为什么会这样。
编辑:
原来自定义单元格过滤掉了顶部分隔符 View (没有将其添加到 subview ),这似乎破坏了一切。当所有 subview 都传递给 addSubview:(UIView*)view 中的 super 时,它又开始工作了。还是很神秘...
关于ios - ViewWithTag 从 iOS 8 开始不再有效? swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25797596/