web-dev-qa-db-ja.com

Swift 3で静的セルを適切に実装する方法

静的なセルを使用するアプリを構築する方法を示すチュートリアルを文字通り見つけることができませんでした。クリック可能なセル付き。いくつかの古い投稿とobject-cの回答に基づいて、私は何かをまとめました。私の問題は、セルをクリックすると、staticDemoTableCellにメンバーがないpresentが表示されることです。

UIViewControllerにテーブルコントローラーを埋め込みました。そのセル(これまでのところ1つだけ)に対して、クラスを作成しました:

class staticDemoTableCell: UITableViewCell, UITableViewDelegate {
  @IBOutlet weak var tableView: UITableView! 

  override func awakeFromNib() {
    [...]
    tableView.delegate = self
  }

  func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("clicked") // Works when the cell is clicked
    // self.present() do not work. I need to present another viewcontroller when this cell is clicked
  }

}

何かが正しくありません、すべてのセルがクラスですか?

私はこれを行うために正しい方法をとったかどうかを本当に知る必要があります。私が本当に欲しいのは、これ以上のものです。つまり、グループ化されたトランザクション月曜日:リスト、火曜日:リストなどを見たことがあります。各セルは、iOSデバイスの設定と同じようにクリック可能になります。ポインタは非常に感謝します。

6
Sylar

テーブルビューにonly静的セルが含まれていると、はるかに簡単です。

  • Interface Builderでテーブルビューを選択し、ContentStatic Cellsに設定します
  • コントローラクラスにIBOutletsとIBActionsを作成し、それらを接続します。
  • テーブルビューのデータソースメソッドを実装し、セルをサブクラス化する必要はありません。
8
vadian

したがって、次のことができます。テーブルビューを設定し、セルを静的にします。それが完了したら、セクションの数を確認する必要があります。これは、設計または達成したいことによって異なります。

その後、次のようなことができます:

複数のセクションがあり、セクション1に複数のセルがある場合。また、セクション2にはセルが1つしかありません。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    switch indexPath.section {
    case 1:
        switch indexPath.row {
        case 0:
            // Do something
        case 1:
            // Do something 
        default:
            break
        }
    case 2:
        // Do something
    default:
        break
    }
}

2つのセルを含むセクションが1つしかない場合は、次のようなことができます。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    switch indexPath.row {
    case 0:
        // Do something
    case 1:
        // Do something
    default:
        break
    }
}

これがあなたの問題の解決に役立つことを願っています。幸運を

9
J Arango