erd*_*mgc 7 uitableview ios swift
我试图用我的委托方法cellForRowAtIndexPath创建带有swift的UITableViewCell,
代码很简单,就像在Objective-c中一样,只是试图将语言变为swift.
我在这条线上遇到错误
var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as UITableViewCell
if(cell == nil)
{
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle,reuseIdentifier:cellIdentifier)
}
Run Code Online (Sandbox Code Playgroud)
错误是UITableViewCell无法转换为"MirrorDisposition"
我查了一些例子,代码是这样的
if !cell
{let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle,reuseIdentifier:cellIdentifier)
}
Run Code Online (Sandbox Code Playgroud)
但它也给出了一个错误.
我究竟做错了什么?
Woo*_*ock 11
截至最新的beta(beta 6),非可选类型无法与nil进行比较.
因此,您必须将单元格Var声明为Optional.
像这样的东西会正常工作(我的头顶 - 我没有Xcode在我面前):
//declare a tableViewCell as an implicitly unwrapped optional...
var cell:UITableViewCell! = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? UITableViewCell
//you CAN check this against nil, if nil then create a cell (don't redeclare like you were doing...
if(cell == nil)
{
cell = UITableViewCell(style: UITableViewCellStyle.Subtitle,reuseIdentifier:cellIdentifier)
}
Run Code Online (Sandbox Code Playgroud)
一个更好的选择是使用更现代的方法,它总是返回一个单元格(只要你使用故事板,或者为单元格注册了笔尖或类)
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as UITableViewCell
Run Code Online (Sandbox Code Playgroud)
由于该方法总是返回一个单元格,因此它不是可选的,并且不需要检查nil.
| 归档时间: |
|
| 查看次数: |
6704 次 |
| 最近记录: |