web-dev-qa-db-ja.com

エラーが発生します-nibには、UITableViewCellインスタンスでなければならない最上位オブジェクトを1つだけ含める必要があります '"

TableViewでカスタムセルを使用していますが、実行すると、質問で述べたエラーが発生します。

 self.districtTableView.register(UINib(nibName: "PlaceCollectionViewCell", bundle: nil), forCellReuseIdentifier: "placeCell")

 func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
    return false
}

func textFieldDidEndEditing(_ textField: UITextField) {
    // TODO: Your app can do something when textField finishes editing

    print("The textField ended editing. Do something based on app requirements.")
}

func numberOfSections(in tableView: UITableView) -> Int {
     return 1
}

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "placeCell") as! PlaceTableViewCell
    // Set text from the data model
    cell.distLabel.text = districts[indexPath.row]
    cell.textLabel?.font = distTextField.font
    return cell

このエラーを取り除くにはどうすればよいですか。テーブルビューでセルを登録するためにさまざまな方法を使用しました。しかし、それは機能しません。助けてください

10
Rakesh Mohan

Tableviewcellのxibを使用している場合は、このようにxibをviewDidLoadに登録します。

tableView.registerNib(UINib(nibName: "PlaceTableViewCell", bundle: nil), forCellReuseIdentifier: "placeCell")

TableViewcellのカスタムクラスを使用している場合は、これを試してください。

let placeCell : PlaceTableViewCell = tableView.dequeueReusableCell(withIdentifier: "placeCell") as! PlaceTableViewCell

私が見ているようにあなたのコードの仕事はほぼ正しいです。私の答えがあなたを助けることを願っています。

5
dahiya_boy

Interface Builder(XIB)からタップジェスチャーを追加しました。

この問題を解決する削除します。

gestureをxibにprogramatically wayで追加する必要があります

29

.xibファイルに複数のテーブルビューセルがあると、このエラーが発生します。テーブルビューのセルを個別の.xibファイルに移動すると、エラーが解決しました。

nibは、UITableViewCellインスタンスでなければならない正確に1つの最上位オブジェクトを含む必要があります

11
Ntho

「PlaceCollectionViewCell.xib」ファイルを開きます。トップレベルのビューが1つだけであることを確認します(サイドパネルを見てください。キャンバスだけでなく、表示されていない場合もあります)。ビューに、UITableViewCellのサブクラスであるクラス(UICollectionViewCellではなく、xibの名前が疑わしいように見える)と、識別子の再利用が割り当てられていることを確認します。

only one view on top level

has class and reuse identifier

8
mrvn

私の場合、セルの外に追加されたビューでした。そこにいるべきではなかった

enter image description here

7
milczi

エラーは誤解を招く可能性があります。何らかの方法でビューをセルにドラッグすると、メインビューから別のレベルのビューが作成されました。あなたのxib ndからそれを削除してくださいndエラーは行く必要があります

4
Shubham Goel

私も同じ問題を抱えていて、自分の細胞に必要なすべての制約がなかったのです。見てみな

0
oskarko