以编程方式实例化 TableViewController 子类后,它的出口为零

Posted

技术标签:

【中文标题】以编程方式实例化 TableViewController 子类后,它的出口为零【英文标题】:After instantiating TableViewController subclass programmatically, its outlets are nil 【发布时间】:2015-08-21 14:17:20 【问题描述】:

在以编程方式实例化 EditCountsTableViewCell 后,其出口在访问时返回 nil,因此我无法编辑单元格。使用 Storyboard 实例化时,单元格的行为正常。

@IBAction func countNameChanged(sender: AnyObject) 

    let textField = sender as! UITextField
    let text = textField.text

    let superview = textField.superview!
    let cell = superview.superview as! EditCountsTableViewCell
    let indexPath = self.tableView.indexPathForCell(cell)
    let row = indexPath?.row

    var newCell = EditCountsTableViewCell() //Instantiate Cell Programatically

    println(newCell)

    println(newCell.countName) //nil

    if let name = newCell.countName

        name.text = text

    

    if let value = newCell.countValue

        value.text = cell.countValue.text

    

    tableViewContents[row!] = newCell


EditCountsTableViewCell类:

import UIKit

class EditCountsTableViewCell: UITableViewCell 

    @IBOutlet weak var countName: UITextField!
    @IBOutlet weak var countValue: UITextField!

    override func awakeFromNib() 
        super.awakeFromNib()
        // Initialization code
    

    override func setSelected(selected: Bool, animated: Bool) 
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    


【问题讨论】:

【参考方案1】:

你试过这种初始化方式吗?

let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("someViewController") as! UIViewController

(Source)

【讨论】:

我对此有点陌生,以编程方式实例化视图控制器有什么帮助? 通常,如果您想要的视图控制器在不同的故事板中,您可以使用代码来实例化它,而不是尝试使用 segue。更少的代码 = 更少的错误 但这对实例化 TableViewCell 有何帮助? 这将实例化tableView,就像您从情节提要中访问它一样,因此系统将负责实例化其所有依赖项【参考方案2】:

您想以编程方式获取 EditCountsTableViewCell 变量,但您的单元格是从情节提要中初始化的,因此您应该从情节提要中获取它。

【讨论】:

那么有没有办法以编程方式正确实例化EditCountsTableViewCell 你只是想编辑单元格,为什么不使用 func cellForRowAtIndexPath(_ indexPath: NSIndexPath) -> UITableViewCell?得到细胞? 我不只是编辑单元格,我试图在表格视图中保留一个单独的所有单元格数组,我找不到从TableView 类简单地访问它的方法

以上是关于以编程方式实例化 TableViewController 子类后,它的出口为零的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式实例化 vuetify-components

以编程方式将委托实例化到组件

MonoTouch 以编程方式为 ContainerView 实例化 ViewController

以编程方式添加控件时未实例化占位符

如何在没有情节提要的情况下以编程方式实例化视图控制器

Vue.js:以编程方式实例化功能组件