nib中的IBOutlets在awakeFromNib和initWithCoder上均为零 - 没有子视图

 x修者x 发布于 2022-12-29 14:13

我有一个自定义UIView子类,通过Nib文件(UIImageView,UIView和UITextField)和IBOutlets集添加了三个子视图.但是当在子类中调用awakeFromNibinitWithCoder调用时,所有IBOutlet都是nil,甚至子视图数组都是空的.

我正在使用Swift和XCode 6 beta 5,其中这个UIView 子类在框架中,我将UIView子类添加到项目中的Storyboard中,因此我可以使用新的Live View技术.但是我无法在实时视图中看到添加的子视图,这非常令人难过.

我找不到任何解决方法,这是我的UIView子类的代码:

import UIKit

@IBDesignable public class BlurredSheetEntryView: UIView {

    @IBOutlet var iconImageView: UIImageView?
    @IBOutlet var separatorView: UIView?
    @IBOutlet public var textField: UITextField?

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required public init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)

        for subView in self.subviews {
            println("subView: \(subView)")
        }

        println("self.textField: \(self.textField)")
        println("self.iconImageView: \(self.iconImageView)")
        println("self.separatorView: \(self.separatorView)")
    }

    override public func awakeFromNib() {

        for subView in self.subviews {
            println("subView: \(subView)")
        }

        println("self.textField: \(self.textField)")
        println("self.iconImageView: \(self.iconImageView)")
        println("self.separatorView: \(self.separatorView)")

    }
}

我的Nib文件看起来像这样:



    
        
        
    
    
        
        
        
            
            
            
                
                    
                    
                        
                    
                
                
                    
                    
                    
                
                
                    
                    
                    
                        
                    
                
            
            
            
                
                
                
                
                
                
                
                
                
                
            
            
            
            
                
                
                
            
            
        
    

更新: 我创建了一个绝对简单的示例项目,我只做了以下内容:

选择适用于iOS的Master-View模板

使用Xib文件添加名为"MyCustomTableViewCell"的新框架

在Xib文件中添加带蓝色背景颜色的UIView作为子视图

在Swift文件中添加@IBOutlet和连接

在Swift文件中的awakeFromNib()中添加println()语句

将Master tableView中的Cells类设置为框架中的子类

当我构建并运行并单击"+" - 右上角的Sign时,我在控制台上打印出"nil"作为@IBOutlet的结果.这是我的问题,让我烦恼的是什么.但也许我在这里做错了......

我上传了示例项目,这是下载网址:https://www.dropbox.com/s/vcb0sa98tw6i1iv/NilObjectsFromXib.zip? dl = 0

我正在使用一个框架因为我想在我的主故事板中看到我的子类作为实时视图.

在此先感谢您的帮助!:)

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有