web-dev-qa-db-ja.com

UITableVIewCellエラーXcode7 / Swift 2

このコードで次のエラーが発生しました。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("Cell") as? UITableViewCell

エラー:「UITableViewCell?」からのダウンキャスト'UITableViewCell'は、オプションのみをアンラップします。 '!'を使うつもりでしたか?

何か案は?

15
yzet00

Swift2.0メソッドでdequeueReusableCellWithIdentifierは次のように宣言されます。

@available(iOS 6.0, *)
func dequeueReusableCellWithIdentifier(identifier: String, forIndexPath indexPath: NSIndexPath) -> UITableViewCell

UITableViewCellUITableViewCell?にキャストしないでください。以下のコードを参照してください。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)

    // Configure the cell...

    return cell
}

お役に立てれば!

30
Long Pham

Xcode 7以降、dequeueReusableCellWithIdentifierは常にオプションではないUITableViewCellを返します。

タイプを指定する必要はありません。簡潔に次のように書くことができます。

let cell = tableView.dequeueReusableCellWithIdentifier("Cell")

または、UITableViewCellのカスタムサブクラスがある場合

guard let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as? SomeOtherCell else { fatalError("unexpected cell dequeued from tableView") }
3
Kelvin Lau
 CMessageCell=self.MessageTable.dequeueReusableCellWithIdentifier("CustomMessageCell") as! CustomMessageCell
0

代わりにこれを使用してください

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell")
0
Tyler