ios - 利用外部加载 Nib 中的 IBOutlets/IBActions

标签 ios swift swift2 interface-builder

请原谅我的菜鸟问题,但我真的需要一些帮助。我正在学习使用 swift2 进行 IOS 开发。不幸的是,当涉及到使用 Views/Nib 文件时,我遵循/完成的教程并没有真正涉及太多高级内容。

无论如何,我正在尝试创建一个自定义类来加载我的 Nib,并且我可以使用 UIView 类型的新实例化类的 Outlet/Actions。

我找到了一些信息,使我能够正确加载 View 并将其插入到我的 tableHeaderView 中,但我有点迷失了。我需要一点指导。

ReserveHeaderCell.swift

class ReserveHeaderCell : UIView{


    @IBOutlet weak var ReserveHeaderImageView: UIImageView!


    class func instanceFromNib() -> UIView {
        return UINib(nibName: "ReserveHeaderCell", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! ReserveHeaderCell
    }

}

我将我的xib中的类设置为此类,此外,outlet引用父 View 中的UIImageView。

ReserveViewController.swift 包含:

let reserveHeaderFrame: CGRect = CGRectMake(0,0,self.view.frame.size.width, 164)
let rhCell = ReserveHeaderCell.instanceFromNib()
rhCell.frame = reserveHeaderFrame
ReserveTableView.tableHeaderView = rhCell

这一切都有效。框架被创建,xib 被加载并添加到 View 中。太好了,问题是,我无权访问 ReserveHeaderCell.swift 文件中定义的 IBOutlet。另外,我真的不知道这是否是完成我想做的事情的正确方法。

我想要完成什么(使用 obj-C 完成)

- (id)initWithFrame:(CGRect)frame {
    if (self) {
        NSArray *nib = [[NSBundle mainBundle]
                        loadNibNamed:@"HeaderNib"
                        owner:self
                        options:nil];

        self = [nib objectAtIndex:0];
        // ACTIONS GO HERE

    }
    return self;
}

这样我就可以访问创建的任何 IBOutlet(在 obj-c 中是 H 文件,但就我而言,它将是类,对吧?)

使用 obj-c 方法,我可以简单地调用 view.outlet = ""并访问它们。

感谢任何帮助。任何可以提供帮助的教程链接都将受到赞赏。

提前谢谢您。

最佳答案

您可以使用此代码来初始化您的 nib 文件

let view = (NSBundle.mainBundle().loadNibNamed("MenuHeader", owner: self, options: nil)[0] as? UIView)
tableView.tableHeaderView = view

然后您的 MenuHeader 将是一个普通的 .xib 文件,其中包含您的单元格,只需记住适当调整约束以适合您想要的所有屏幕。如果您已经有一个 UIView 类,则必须将 nib 文件与此类连接,然后您可以使用“view.label.text”,然后更改您的值。请记住保留此 View 的引用,或者在必须更改标题信息时创建一个新 View 。如果您想跟踪操作,最好的方法是通过委托(delegate)方法或使用 NSNotificationCenter。

关于ios - 利用外部加载 Nib 中的 IBOutlets/IBActions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38463880/

相关文章:

iphone - 如何处理来自 UIImagePickerController 的多个图像?

ios - swift 。继承对象的集合

ios - Viewcontroller 无法识别我的变量?

iphone - Flurry User ID 是邪恶的吗?

ios - 如何使用此数据分段上传

ios - 我可以在 native iOS 应用程序和后端之间共享 Facebook 身份验证吗?

swift - 如何将图像从 UITableViewCell 传递到 UIImage

ios - 如何为 UITextView 的 UIMenuController 添加更多样式选项?

swift - 使用 UILexicon 在 iOS 8 键盘扩展中实现自动更正

ios - 快速将图像转换为 BASE64 字符串