以编程方式实例化 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 子类后,它的出口为零的主要内容,如果未能解决你的问题,请参考以下文章