自定义视图未初始化

时间:2018-03-19 05:29:32

标签: ios swift

我的项目中包含单选按钮的自定义视图。我已经从故事板中的视图连接到视图控制器中的插座。

当我尝试访问该出口以在视图中设置委托时加载,应用程序崩溃(在控制台上不显示任何错误)。我试图设置该对象的委托进行测试,因为我在尝试设置其中一个属性时收到了EXC_BAD_ACCESS(code = 2,address = 0x000 ..)错误。当我尝试打印对象的描述时,它不会将其识别为我设置的自定义类的对象,而只是一个UIView。我没有访问视图控制器或任何其他视图控制器中的插座的代码。

我已经尝试重新连接插座,但这不是问题,因为它在应用程序的测试方案上正常工作。该应用程序在应用程序的App Store方案中崩溃。

注意: -

  1. 由于我不熟悉该计划的所有细节可能带来的这种意外行为(如果有的话),以及如何分享这些行为的细节,请让我知道额外的可能与评论中调试此问题有关的详细信息,我将更新详细信息。

  2. 另请注意,我已将自定义视图类包含在应用商店目标中(因此不是问题)。

  3. 感谢任何帮助。感谢

    更新

    1. 代码分配委托已完成viewDidLoad()

      customView.delegate = self

    2. 自定义类有两个init(我没有写它,所以不知道为什么)

      required init?(coder aDecoder: NSCoder) {
          super.init(coder: aDecoder)
          initializeSubviews()
      }
      
      override init(frame: CGRect) {
          super.init(frame: frame)
          initializeSubviews()
      }
      
      func initializeSubviews() {
          let xibFileName = "xibName"
          let view = NSBundle(forClass: self.dynamicType).loadNibNamed(xibFileName, owner: self, options: nil)![0] as! UIView
          view.tag = 1111
          self.addSubview(view)
          view.frame = self.bounds
      
          radio1Img.hidden = true
      
          let radio1ImgTappedG: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(RadioButton2.radio1ImgTapped))
          radio1Img.addGestureRecognizer(radio1ImgTappedG)
      
          let radio1CaptionTappedG: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(RadioButton2.radio1CaptionTapped))
          radio1Caption.addGestureRecognizer(radio1CaptionTappedG)
      
          let radio2ImgTappedG: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(RadioButton2.radio2ImgTapped))
          radio2Img.addGestureRecognizer(radio2ImgTappedG)
      
          let radio2CaptionTappedG: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(RadioButton2.radio2CaptionTapped))
          radio2Caption.addGestureRecognizer(radio2CaptionTappedG)
      
          let radio3ImgTappedG: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(RadioButton2.radio3ImgTapped))
          radio3Img.addGestureRecognizer(radio3ImgTappedG)
      
          let radio3CaptionTappedG: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(RadioButton2.radio3CaptionTapped))
          radio3Caption.addGestureRecognizer(radio3CaptionTappedG)
      
          let radio4ImgTappedG: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(RadioButton2.radio4ImgTapped))
          radio4Img.addGestureRecognizer(radio4ImgTappedG)
      
          let radio4CaptionTappedG: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(RadioButton2.radio4CaptionTapped))
          radio4Caption.addGestureRecognizer(radio4CaptionTappedG)
      
      
          radio1Caption.hidden = true
          radio1Caption.textColor = UIColor(netHex: 0x8C8C8C)
          radio2Img.hidden = true
          radio2Caption.hidden = true
          radio2Caption.textColor = UIColor(netHex: 0x8C8C8C)
          radio3Img.hidden = true
          radio3Caption.hidden = true
          radio3Caption.textColor = UIColor(netHex: 0x8C8C8C)
          radio4Img.hidden = true
          radio4Caption.hidden = true
          radio4Caption.textColor = UIColor(netHex: 0x8C8C8C)
      }
      
    3. 另请注意,我有一个非常相似的自定义视图,几乎相同的代码,但不同的UI,并且该视图没有任何问题。

      更新:从设备添加崩溃日志的图像。 123

1 个答案:

答案 0 :(得分:0)

抱歉,一旦得到答案,我忘了更新这个问题的答案。

所以我解决了这个问题。这似乎是一个与目标相关的问题。故事板中插座的视图属于不同的模块。

enter image description here

在身份检查器中,该模块被选为企业模块。所以它没有包含在app store构建中。当我将模块设置为空时,应用程序适用于这两个方案。

我不知道如何更好地解释它。如果有人可以通过解释更多来阐明这一点,那将是非常值得赞赏的。

无论如何,这才是最终奏效的。