UITableViewCell的Xib

时间:2015-03-11 09:00:08

标签: ios iphone swift ios8

我想使用Xib作为UITableViewCell的View。但我不确定我是否以正确的方式做到了(我不确定它是否会将细胞出列)

选项#1,我可以调用方法" test"

选项#1:

class MainMenuVC: UIViewController {

@IBOutlet weak var tableView: UITableView!
let nib = UINib(nibName: "MenuEntryRomaView", bundle: nil) 

override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView.registerNib(nib, forCellReuseIdentifier: "cell") // Im guessing this line actually doesnt apply here...
}

@IBAction func test(sender: AnyObject) {
    println("go!")
}
}

extension MainMenuVC: UITableViewDataSource {

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = nib.instantiateWithOwner(self, options: nil).first  as MenuEntryView
    cell.menuImageView.image = UIImage(named: "close_button")
    cell.menuLabel.text = "Texto de menu"
    return cell
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1000
}
}

但是我在这篇文章中找到了另一个解决方案: Assigning the outlet for a UITableViewCell using UINib 并且可以在我的例子中应用如下:

选项2

class MainMenuVC: UIViewController {

@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
    super.viewDidLoad()
    let nib = UINib(nibName: "MenuEntryRomaView", bundle: nil)
    self.tableView.registerNib(nib, forCellReuseIdentifier: "cell")
}

@IBAction func test(sender: AnyObject) {
    println("go!")
}
}

extension MainMenuVC: UITableViewDataSource {

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCellWithIdentifier("cell") as MenuEntryView
    cell.menuImageView.image = UIImage(named: "close_button")
    cell.menuLabel.text = "Texto de menu"
    return cell
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1000
}
}

但是我没有在这个解决方案的任何地方设置所有者,当我调用方法"测试"从xib我得到一个错误。我试着做nib.instantiateWithOwner(self,options:nil)  在实例化nib UINib(nibName ..)但没有成功之后。请注意,我尝试了1k行的手机上的两个代码,并且我没有遇到任何类型的延迟(5s)。我的问题是:在#option 1中,它真正地将细胞出列?以及如何在选项2中将所有者设置为MainMenuVC以便能够从单元格中调用方法测试?

更新 这是我创建的示例项目的链接,我试图从单元格内的按钮调用VC中的方法。

http://www.ruiznadal.com/TestXibCell.zip

0 个答案:

没有答案