拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 自定义单元格在TableView控制器中注册和使用,但在应用程序中是默认单元格

自定义单元格在TableView控制器中注册和使用,但在应用程序中是默认单元格

白鹭 - 2022-02-28 1972 0 0

我想在 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!
}

自定义单元格在 TableView 控制器中注册和使用,但在应用程序中是默认单元格

自定义单元格在 TableView 控制器中注册和使用,但在应用程序中是默认单元格

自定义单元格在 TableView 控制器中注册和使用,但在应用程序中是默认单元格

自定义单元格在 TableView 控制器中注册和使用,但在应用程序中是默认单元格

GitHub 仓库:https ://github.com/IgorShevtshenko/BeerList

uj5u.com热心网友回复:

只需洗掉此行:

self.tableView.register(BeerCell.self, forCellReuseIdentifier: "BeerCell")

当您在故事板场景中使用原型单元时,故事板会根据重用识别符号为您注册类。仅当您使用自定义类或 nib 时才需要注册您的单元格。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *