我有一个UITableviewController ,我尝试覆盖菜单。

为此,我按以下步骤进行:

在主控制器中,我创建一个UIviewUIview子类:

    class MyTableViewController: UITableViewController{

    ..........
    // Placeholder view for custom view
    var overlayView = CustomView(frame: CGRect(x: 12, y: 100, width: 300, height: 100))

    .........

// function that must be call from CustomView

    func testPrint(){

       println("testPrint")

    }

      override func viewDidLoad() {
            super.viewDidLoad()

    // add view on overlay to the UITableviwController
      self.view.addSubview(overlayView)

    ......... }

    ..... }

我添加一个CustomView.xib文件

我添加一个CustomView.swift文件

 import UIKit

class CustomView: UIView {

    var view: UIView!

    @IBAction func buttonPressed(sender: AnyObject) {
        println("test")

    }

    override init(frame: CGRect) {

        super.init(frame: frame)

        xibSetup()
    }

    required init(coder aDecoder: NSCoder) {

        super.init(coder: aDecoder)

        xibSetup()
    }

    func xibSetup() {
        view = loadViewFromNib()

        view.frame = bounds

        view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight

        addSubview(view)
    }

    func loadViewFromNib() -> UIView {
        let bundle = NSBundle(forClass: self.dynamicType)
        let nib = UINib(nibName: "CustomView", bundle: bundle)

        // Assumes UIView is top level and only object in CustomView.xib file
        let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
        return view
    }

}

我必须采取哪种方式?

我必须从XIB文件中调用主控制器“ MyTableViewController”中声明的testPrint()函数,并将其分配为CustomView.swift作为文件所有者。

要么

我必须将MyTableViewController分配为XIB文件所有者,并将按钮从XIB文件直接连接到MyTableViewController

这样我会收到错误:

2015-05-16 21:15:02.243 ETA [15578:2618934] Interface Builder文件中的未知类_TtC3ETA4menu。 2015-05-16 21:15:06.935 ETA [15578:2618934] + [ETA。 MyTableViewController pppp:]:无法识别的选择器已发送给类0x1b40f8 2015-05-16 21:15:06.937 ETA [15578:2618934] ***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'+ [ETA。 MyTableViewController myButtonMainController:]:无法识别的选择器发送到类0x1b40f8'

谢谢阿尔贝托

  ask by Alberto Lunardini translate from so

本文未有回复,本站智能推荐:

2回复

在Swift中以编程方式设置XIB文件的约束

如何在超级视图的底部附加XIB文件 我有一个名为“ xibFIleView”的XIB文件 我调用XIB View的代码是: 当我运行我的项目时,我的模拟器显示: 我们如何在超级视图的底部附加XIB视图。
1回复

从XIB文件加载时,Swift中的iOS键盘太宽又太高

我正在使用Swift(带有iOS 8.3 SDK的XCode 6)构建键盘,并且在加载xib时,键盘的宽度和高度都大约为1000像素。 我在自由格式的xib文件中,将所有键放在UIView中,并将UIViews约束设置为分别对上,下,左和右进行超级视图。 如您所见,结果令人讨厌。 这
1回复

如何在Swift项目iOS中使用XIB

我有两个独立的Xcode项目,我已融合成一个:一个用文本识别器实现的文档识别器,用Objective-C编写的XIB文件,另一个项目只是一个用Swift编写的传统用户界面,有更多的东西。 这两个项目都是完美无缺的。 我清除了所有错误,并创建了一个Bridging头文件。 到目前为止,Swi
1回复

如何在Swift中使Xib子视图与超级视图交互?

我已经尝试了好几天了... 我想要一个带有一些按钮和其他内容的笔尖子视图。 主视图将具有其他子视图,这些子视图响应于按下笔尖视图的按钮而改变。 我可以做什么:我已经使用这种方法将xib子视图加载到了超级视图中。 问题:我无法使xib上的按钮与其他子视图交互(例如,更改Labe
1回复

将XIB封装在Swift框架中进行分发?

我正在创建一个Swift框架,因此可以通过CocoaPods和Carthage进行分发。 我的问题是是否可以在我的框架中分发.xib文件? 如果是这样,那么消费型开发人员将如何使用它?
2回复

Swift-XIB中多余的保证金

因此,我的应用程序左右两侧都有一些奇怪的边距: 这是一个xib: 这是来自同一应用程序的另一个XIB: 这是来自XCode(6.1.1)的相应视图: 和 有人对我如何解决此问题有任何想法吗? 我怀疑我的UINavigationController配置错误?
4回复

Swift-“使用无法解析的标识符”

我正在学习Swift! 我想在xib上创建Main接口。 但是出现错误“使用无法解析的标识符”。 从MainViewController添加代码 UPD :(添加图片)
1回复

以编程方式快速更改Xib高度

我实现了2个Xib文件到View Controller(1个View,1个CollectionView)。 我想在滚动时显示/隐藏视图。 我可以隐藏view(设置高度:0),但是当我想返回(设置高度:50)时,它不起作用。 提前致谢。
2回复

使用IBOutlets加载NIB / XIB文件

我想从XIB文件加载UIView,我能够通过以下方式成功完成: let nib = UINib(nibName:“CardView”,bundle:nil).instantiateWithOwner(nil,options:nil).first as! 的UIView 其中C
2回复

从xib文件中为对象创建插座

我有一个Hint.xib文件,其中我有几个元素(标签,图像视图和按钮)。 我有一个名为Hint的类,它是UIView的子类,它加载了这个xib。 以下是Hint类实现的外观: 当前设置 在故事板上,目前,我添加了一个视图控制器,我在该视图控制器的视图中拖动了一个UIView