必须使用非nil布局参数将UICollectionView初始化为Subview

时间:2018-08-11 22:00:13

标签: ios swift swift3 uicollectionview uiimageview

如果要在启用了用户交互功能的情况下将图像导入UICollectionView中,我将尝试设置产品选项,以便用户可以在将产品添加到购物车之前选择他/她喜欢的选项。

@IBOutlet weak var optionView: UIView!
optionView.translatesAutoresizingMaskIntoConstraints = false                 
var Y:CGFloat = -10

        else if dict["type"].stringValue == "image" {
                        let imageOptionView = UICollectionView(frame: CGRect(x: 5, y: Y, width: self.optionView.frame.size.width - 10, height: 30))
                        imageOptionView.isUserInteractionEnabled = true
                        self.optionView.addSubview(imageOptionView)
                        imageOptionView.tag = 11000;
                        Y += 60;
                        let productOptionArray : JSON = JSON(dict["product_option_value"].arrayObject!)
                        let imagesArray:NSMutableArray = []
                        var internalY:CGFloat = 0

                        for j in 0..<productOptionArray.count {
                            let img = UIImageView(frame: CGRect(x: 5, y: internalY, width: imageOptionView.frame.size.width, height: 30))

                            let images = productOptionArray[j]["image"].stringValue
                            let data = NSData(contentsOf: NSURL(string: images)! as URL)
                            img.image = UIImage(data: data! as Data)

                            img.tag = j;
                            img.isUserInteractionEnabled = true
                            imageOptionView.addSubview(img)
                            internalY += 60;
                            imagesArray.add(img)

                            print ("Printing Images", images)
                            print ("Printing ImageView", imageOptionView)
                            print ("Printing One Image", img.image)
                            print ("Printing ImageArray", imagesArray)
                        }

由于它是子视图,因此应遵循主选项视图Y的位置。一旦我测试了应用并尝试加载产品页面,应用就会崩溃。

编辑:感谢@Sh_Khan现在发布了答案,我得到了另一个错误:

  

未定义UICollectionViewFlowLayout的行为,因为:   项目宽度必须小于UICollectionView的宽度   减去部分插图的左右值,减去内容   插入左右值。相关的UICollectionViewFlowLayout   实例是,并且它是   附属于;层=; contentOffset:{0,   0}; contentSize:{0,0}; AdjustedContentInset:{0,0,0,0}>   集合视图布局:。   在以下位置建立符号断点   UICollectionViewFlowLayoutBreakForInvalidSizes可以在   调试器。    *-[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewCategory:],/ BuildRoot / Library / Caches / com.apple.xbs / Sources / UIKit_Sim / UIKit-3698.54.4 / UICollectionView.m:5283中的断言失败   * 由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“无法使视图出队   类型:具有标识符catalogimage的UICollectionElementKindCell-   必须为该标识符注册一个笔尖或一个类,或者连接一个   情节提要中的原型单元格

听起来我们与通过JSON解析的另一张图片有冲突

1 个答案:

答案 0 :(得分:1)

您需要使用此初始化器

is null

//

right join on

//

您需要在单元格中注册collectionView

union all

或者如果您的单元格带有xib,则此

left join on

此处的笔尖名称应为 ImagesCollectionViewCell.xib ,且类为 ImagesCollectionViewCell