如何在自定义UITableViewCell中点击按钮时更改视图

时间:2014-12-17 20:42:52

标签: uitableview button swift uiviewcontroller

通常,我改变这样的观点:

var goBackToMainView:MainViewController = self.storyboard?.instantiateViewControllerWithIdentifier("navigation2") as MainViewController

self.presentViewController(goBackToMainView, animated: true, completion: nil)

但是如果我在用户点击按钮时尝试在我的自定义UITableViewCell中执行此操作,则会出现customTableViewCell does not have a member named 'storyboard' and 'presentViewController'

等错误

如何在TableViewCell中更改视图?

2 个答案:

答案 0 :(得分:1)

您是否尝试过添加为子视图?

示例:

var tableViewCell = UITableViewCell(frame: aFrame)

tableViewCell.addSubview(aView)

答案 1 :(得分:1)

为什么在UITableViewCell子类中呢?您应该在ViewController中进行视图管理。

在视图控制器中:

import UIKit

// Take note of UITableViewDelegate, you'll need it to be able to use
// tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
class MyTableViewController: UITableViewController, UITableViewDelegate {

    // Assuming that you have a storyboard variable in AppDelegate
    let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate

    // .. more code here like viewDidLoad, etc.

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

        var viewController = appDelegate.storyboard.instantiateViewControllerWithIdentifier("MainViewController") as MainViewController

        // This will probably appear as a modal
        self.presentViewController(viewController, animated: true, completion: nil)
    }

}

注意:我刚刚为上面的代码做了一个快速操场,所以你可能需要打开选项。

如果您将视图控制器嵌入导航控制器中,则可能需要使用“展开锯齿”。有关此内容的更多信息,请访问:What are Unwind segues for and how do you use them?

干杯!