ボクココ

個人開発に関するテックブログ

UITableView の Accessory 系が全く表示されない

iOS アプリ開発で意外に詰まるところになるような気がしたのでメモ。UITableView を配置し、右側に矢印出したい。こんな感じ。

f:id:cevid_cpp:20141203105210p:plain

以下のようなコードを書いた。

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("identifier", forIndexPath: indexPath) as UITableViewCell
        cell.textLabel.text = self.settings[indexPath.section][indexPath.row]
        
        cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
        return cell
    }

しかし、右側に矢印っぽいのは表示されない。

原因

UITableView の Widthが画面を超えてしまっていた。本当は表示されているのに、画面外に表示されていた。

ちゃんと UITableView の Width を画面に収まるようにしたら表示されました。。

やられたやられた。これはわっかりにくいw

AccessoryType, AccessoryView

AccessoryTypeはiOS SDK であらかじめ用意されたテンプレート。 AccessoryView は独自のUIView を継承したものならなんでも追加できるみたい。

この AccessoryView を使うことで、テーブルの右側に Switch を置いたり、 TextView を置いたりできる。これはなかなか便利なので覚えておこう。