2

嘿嘿!

我想展示一个带有 Action 的 ViewController(在自定义单元格中的 UIButton 的tappedInside)。在这种情况下,我不能只是从自定义单元格中的 UIButton 控制拖动到 NavigationController(ViewController 是嵌入的)。

我如何才能意识到在表格视图的一行中的按钮(在自定义单元格中)上的“tappedInside”将显示一个新的 ViewController?

谢谢!

4

2 回答 2

2

使用 Xcode 6 beta 7,您的子类UITableViewControllerUITableViewCell子类将如下所示:

import UIKit

class CustomCell: UITableViewCell {

    @IBOutlet weak var button: UIButton!

}

class TableViewController: UITableViewController {

    //Set method for UIButton
    func push(sender: AnyObject) {
        navigationController!.pushViewController(storyboard!.instantiateViewControllerWithIdentifier("ViewController") as ViewController, animated: true) //where ViewController is the name of the UIViewController and "ViewController" the identifier you set for it in your Storyboard
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

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

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as CustomCell
        cell.selectionStyle = .None

        //Set button's target
        cell.button.addTarget(self, action: "push:", forControlEvents: .TouchUpInside)

        return cell
    }

}
于 2014-09-03T01:12:10.443 回答
2

当您单击具有委托的单元格时,您可以触发:

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
  // some code
}

要打开一个新的视图控制器,如果你使用故事板,你可以试试这个:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let newVC = storyboard.instantiateViewControllerWithIdentifier("myIdentifier") as youClassController
self.presentViewController(newVC, animated: false, completion: nil)

希望有所帮助

于 2014-09-03T08:40:36.913 回答