1

UITableView にカスタム セルをロードする必要があります。「CustomTableViewCell」という名前の UITableViewCell のカスタム サブクラスを作成しました。図に示すように、(ドラッグ アンド ドロップを使用して) テーブルビューに UITabelViewCell を追加しました。次に、ファイル インスペクタで、その UITabelViewCell のクラスを「CustomTableViewCell」に設定しました。これが私のコードです:

class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

    @IBOutlet var tableView : UITableView

    var items = String[]()


    override func viewDidLoad() {
        super.viewDidLoad()
        items = ["Hi","Hello","How"]
        self.tableView.registerClass(CustomTableViewCell.self, forCellReuseIdentifier: "CusTomCell")
        // Do any additional setup after loading the view, typically from a nib.
    }

    func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int{
        return items.count
    }

   func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!{
    var cell:CustomTableViewCell? = self.tableView.dequeueReusableCellWithIdentifier("CusTomCell") as? CustomTableViewCell
    if !cell
    {
        cell = CustomTableViewCell(style: UITableViewCellStyle.Subtitle,
            reuseIdentifier: "CusTomCell")
    }
    println("cell \(cell)")
   // cell.?.labelTitle.text = items[indexPath.row]
    cell!.labelTitle.text = "some text"
    return cell
}





    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

ここに画像の説明を入力

コードを実行すると、「致命的なエラー: Optional.None をアンラップできません」というエラーが表示されます (画像を参照)。

4

3 に答える 3

2

ステップ1:以下のようにviewDidLoad()にnibを登録します

var xib : UINib = UINib (nibName: "WeatherTableViewCell", bundle: nil)
self.tableView.registerNib(xib, forCellReuseIdentifier: "Cell")

ステップ 2: cellForRowIndexPath に以下を追加します。

var cell:WeatherTableViewCell? = self.tableView.dequeueReusableCellWithIdentifier("Cell") as? WeatherTableViewCell
cell!.weatherName.text = "weather" 
return cell
于 2014-06-23T11:46:29.893 に答える
0

self.tableView.dequeueReusableCellWithIdentifier は、以前に作成されたセルがある場合にのみセルを返します。nil チェックを行い、nil の場合は新しいセルを作成する必要があります。あなたの場合、 cell.labelTitle.text = で問題が発生します。これは、セルが nil である可能性があるためです。

于 2014-06-07T09:19:22.040 に答える