我有UITableviewController
,我尝试将菜单叠加。
为此,我按照以下步骤进行操作:
在主控制器中,我创建了一个UIview
,CustomView的子类:
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'
感谢Alberto