Swift 实例化UITableViewCell以在TableView方法之外使用
对此可能有一个简单的答案 我试图从自定义的Swift 实例化UITableViewCell以在TableView方法之外使用,swift,swift2,Swift,Swift2,对此可能有一个简单的答案 我试图从自定义的tableviewcell中访问变量,我尝试了多种方式实例化单元格,每次我都会收到一个错误,指出值为零,从而使我相信我没有正确初始化单元格 我知道要实例化一个viewcontroller,我会执行以下操作: let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("UserProfile") as! UserProfileViewC
tableviewcell
中访问变量,我尝试了多种方式实例化单元格,每次我都会收到一个错误,指出值为零,从而使我相信我没有正确初始化单元格
我知道要实例化一个viewcontroller
,我会执行以下操作:
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("UserProfile") as! UserProfileViewController
func doSomethign() {
let cell = CustomTableViewCell()
cell.user = username
}
是否有类似的方法初始化tableviewcell
请澄清:
我想做一些事情,比如:
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("UserProfile") as! UserProfileViewController
func doSomethign() {
let cell = CustomTableViewCell()
cell.user = username
}
您不应该以这种方式直接创建单元格。相反,您首先要注册单元格以便重新使用:
tableView.registerNib(UINib(nibName: "yourNib", bundle: nil), forCellReuseIdentifier: "CellIdentifier")
然后在需要时将单元格出列:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("CellIdentifier", forIndexPath: indexPath)
cell.user = username
return cell
}
这是因为tableView将重用屏幕外滚动的单元格以提高性能。请注意,它要求您将单元格的重用标识符设置为正确匹配。您不应以这种方式直接创建单元格。相反,您首先要注册单元格以便重新使用:
tableView.registerNib(UINib(nibName: "yourNib", bundle: nil), forCellReuseIdentifier: "CellIdentifier")
然后在需要时将单元格出列:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("CellIdentifier", forIndexPath: indexPath)
cell.user = username
return cell
}
这是因为tableView将重用屏幕外滚动的单元格以提高性能。请注意,它要求您将单元的重用标识符设置为正确匹配。正确的方法是您根本不应该这样做。正如Michael指出的那样,
TableView
重用单元格,因此尽管可以获取对单元格的引用,但只有在单元格已经创建,并且没有因此退出队列以供重用的情况下才可能。在这种情况下,您应该做的是更新模型,然后告诉TableView
在对应于正确模型对象的索引处重新加载单元格。通过这种方式,您的应用程序遵循MVC设计,并且可以更好地防止由于无单元引用而导致的崩溃 正确的方法是你根本不应该这样做。正如Michael指出的那样,TableView
重用单元格,因此尽管可以获取对单元格的引用,但只有在单元格已经创建,并且没有因此退出队列以供重用的情况下才可能。在这种情况下,您应该做的是更新模型,然后告诉TableView
在对应于正确模型对象的索引处重新加载单元格。通过这种方式,您的应用程序遵循MVC设计,并且可以更好地防止由于无单元引用而导致的崩溃 有趣的是,人们会投票反对我们两人,却对为什么不作任何评论。有趣的是,人们会投票反对我们两人,却对为什么不作任何评论。