我想在 TableViewController 中使用的 UITableViewController 中使用我的自定义单元格。我注册了自定义单元格并在 cellForRowAt 方法中使用它。单元是在情节提要中“创建”的。控制器的所有类都已设定,识别符号也已设定,自定义单元格也已选择类和识别符号。但是当我启动我的应用程序时,它会显示默认的空单元格。这是我的代码:
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let beersList = BeersListModuleBuilder.createBeersListView()
let beersListNavController = UINavigationController(rootViewController: beersList)
beersListNavController.tabBarItem = UITabBarItem(title: "All beers", image: nil, tag: 1)
let favoriteBeersList = UIViewController()
let favoriteBeersListNavController = UINavigationController(rootViewController: favoriteBeersList)
favoriteBeersListNavController.tabBarItem = UITabBarItem(title: "Favorites", image: nil, tag: 2)
self.viewControllers = [beersListNavController, favoriteBeersListNavController]
}
}
class BeersListTableViewController: UITableViewController{
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(BeerCell.self, forCellReuseIdentifier: "BeerCell")
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 20
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "BeerCell", for: indexPath) as! BeerCell
cell.beerName?.text = "beer.name"
cell.beerABV?.text = "beer.abv"
cell.addToFavoritesButton?.setImage(UIImage(systemName:"star"), for: .normal)
return cell
}
}
class BeerCell: UITableViewCell {
@IBOutlet var beerName: UILabel!
@IBOutlet var beerABV: UILabel!
@IBOutlet var addToFavoritesButton: UIButton!
}
GitHub 仓库:https ://github.com/IgorShevtshenko/BeerList
uj5u.com热心网友回复:
只需洗掉此行:
self.tableView.register(BeerCell.self, forCellReuseIdentifier: "BeerCell")
当您在故事板场景中使用原型单元时,故事板会根据重用识别符号为您注册类。仅当您使用自定义类或 nib 时才需要注册您的单元格。
0 评论