尝试将自定义单元格添加到 table 视图时出错
Error while trying to add a custom cell into table view
我正在尝试将自定义单元格添加到我的表格视图中
这是我为自定义 CustomProfileView.xib 文件配置的
Main.storyboard
我一直在
Use of undeclared type 'CustomProfileCell'
这是我的全部代码
//
// FirstViewController.swift
// tabbed
//
// Created by Ben Heng on 7/18/18.
// Copyright © 2018 LR Web Design. All rights reserved.
//
import UIKit
class FirstViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var profileTableView: UITableView!
var profileArray = [Profile]()
override func viewDidLoad() {
super.viewDidLoad()
profileTableView.delegate = self
profileTableView.dataSource = self
profileTableView.register(UINib(nibName: "ProfileCell",bundle: nil) , forCellReuseIdentifier: "CustomProfileCell")
retrieveProfiles()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return profileArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "customProfileCell", for: indexPath) as! CustomProfileCell
cell.profileImage.image = UIImage(named: profileArray[indexPath.row].profileImage)
cell.profileName.text = profileArray[indexPath.row].name
cell.deviceCount.text = profileArray[indexPath.row].deviceCount
return (cell)
}
func retrieveProfiles() {
let p1 = Profile()
p1.name = "John"
p1.deviceCount = "10"
p1.profileImage = "john"
profileArray.append(p1)
let p2 = Profile()
p2.name = "Jane"
p2.deviceCount = "5"
p2.profileImage = "jane"
profileArray.append(p2)
let p3 = Profile()
p3.name = "Andrew"
p3.deviceCount = "4"
p3.profileImage = "andrew"
profileArray.append(p3)
self.profileTableView.reloadData()
}
}
根据你的swift名字CustomProfileViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "customProfileCell", for: indexPath) as! CustomProfileViewCell
//
profileTableView.register(UINib(nibName: "CustomProfileViewCell",bundle: nil) , forCellReuseIdentifier: "customProfileCell")
请先阅读 this,它解释了 reuseIdentifier
的工作原理及其含义。
首先,您的 nib 名称是 CustomProfileViewCell
,但您正在使用 ProfileCell
名称注册 nib。
第二个错误是您在故事板中使用了 ProfileCell
标识符,它应该与您定义的标识符相同,即 - customProfileCell
.
您的手机注册应如下所示
profileTableView.register(UINib(nibName: "CustomProfileViewCell",bundle: nil) , forCellReuseIdentifier: "customProfileCell")
然后您想像这里一样使用它:
let cell = tableView.dequeueReusableCell(withIdentifier: "customProfileCell", for: indexPath) as! CustomProfileViewCell
我正在尝试将自定义单元格添加到我的表格视图中
这是我为自定义 CustomProfileView.xib 文件配置的
Main.storyboard
我一直在
Use of undeclared type 'CustomProfileCell'
这是我的全部代码
//
// FirstViewController.swift
// tabbed
//
// Created by Ben Heng on 7/18/18.
// Copyright © 2018 LR Web Design. All rights reserved.
//
import UIKit
class FirstViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var profileTableView: UITableView!
var profileArray = [Profile]()
override func viewDidLoad() {
super.viewDidLoad()
profileTableView.delegate = self
profileTableView.dataSource = self
profileTableView.register(UINib(nibName: "ProfileCell",bundle: nil) , forCellReuseIdentifier: "CustomProfileCell")
retrieveProfiles()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return profileArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "customProfileCell", for: indexPath) as! CustomProfileCell
cell.profileImage.image = UIImage(named: profileArray[indexPath.row].profileImage)
cell.profileName.text = profileArray[indexPath.row].name
cell.deviceCount.text = profileArray[indexPath.row].deviceCount
return (cell)
}
func retrieveProfiles() {
let p1 = Profile()
p1.name = "John"
p1.deviceCount = "10"
p1.profileImage = "john"
profileArray.append(p1)
let p2 = Profile()
p2.name = "Jane"
p2.deviceCount = "5"
p2.profileImage = "jane"
profileArray.append(p2)
let p3 = Profile()
p3.name = "Andrew"
p3.deviceCount = "4"
p3.profileImage = "andrew"
profileArray.append(p3)
self.profileTableView.reloadData()
}
}
根据你的swift名字CustomProfileViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "customProfileCell", for: indexPath) as! CustomProfileViewCell
//
profileTableView.register(UINib(nibName: "CustomProfileViewCell",bundle: nil) , forCellReuseIdentifier: "customProfileCell")
请先阅读 this,它解释了 reuseIdentifier
的工作原理及其含义。
首先,您的 nib 名称是 CustomProfileViewCell
,但您正在使用 ProfileCell
名称注册 nib。
第二个错误是您在故事板中使用了 ProfileCell
标识符,它应该与您定义的标识符相同,即 - customProfileCell
.
您的手机注册应如下所示
profileTableView.register(UINib(nibName: "CustomProfileViewCell",bundle: nil) , forCellReuseIdentifier: "customProfileCell")
然后您想像这里一样使用它:
let cell = tableView.dequeueReusableCell(withIdentifier: "customProfileCell", for: indexPath) as! CustomProfileViewCell