gpt4 book ai didi

ios - 将自定义 UITableViewCell 从 nib 加载到 Swift 中的 UIViewController

转载 作者:可可西里 更新时间:2023-11-01 00:23:17 24 4
gpt4 key购买 nike

我目前正在开发一个练习 swift 程序,该程序需要将 CoreData 结果显示在表格上。

我已经构建了我的应用程序, Storyboard本身不包含任何 UI 元素,仅包含 View (带有随附的 UIViewController 类),然后加载自定义 nibs/xibs(也随附UIView 的子类)。在这种情况下,xib 包含一个 UITableView,一个单独的 xib 包含单元格。

TableView 类:

import UIKit

protocol SkillsViewDelegate{
}

class SkillsView: UIView {
var delegate : SkillsViewDelegate!
@IBOutlet weak var skillsTable: UITableView!
}

TableView Controller :

import UIKit
import CoreData

class SkillsViewController: UIViewController, SkillsViewDelegate, UITableViewDataSource, UITableViewDelegate {
var displaySkillsView : SkillsView!
var displaySkillsCell : SkillViewCell!
let textCellIdentifier = "skillViewCell"

override func viewDidLoad() {
super.viewDidLoad()

self.displaySkillsView = UIView.loadFromNibNamed("SkillsView") as! SkillsView
self.displaySkillsView.delegate = self
self.view = self.displaySkillsView
// Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

//MARK : -Table view delegates

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 1
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(textCellIdentifier, forIndexPath: indexPath)

return cell
}
}

TableCellView 类:

import UIKit

protocol SkillsViewCellDelegate{
}

class SkillViewCell: UITableViewCell {
var delegate : SkillsViewCellDelegate!

override func awakeFromNib() {
super.awakeFromNib()
}

override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}

@IBOutlet weak var skillName: UILabel!
@IBOutlet weak var skillRank: UILabel!
}

我不知道如何将单元格 xib 调用到 Controller 中。我猜是 like this problem ,但不同之处在于他使用的是 UITableViewController。我也尝试添加它,但我得到了一个 Multiple inheritance from classes 'UIViewController' and 'UITableViewController' 来解决我的麻烦。

我尝试过的:
我尝试在顶部添加 UITableViewController,但我从类 'UIViewController' 和 'UITableViewController' 中得到了 Multiple inheritance 来解决我的麻烦。

有什么建议吗?

最佳答案

您只需在 SkillsViewController 中注册您的 SkillsViewCell

objective-c

-(void)viewDidLoad {
[super viewDidLoad];
UINib *cellNib = [UINib nibWithNibName:@"NibName" bundle:nil];
[self.skillsTable registerNib:cellNib forCellReuseIdentifier:textCellIdentifier];
}

swift 2

override func viewDidLoad() {
super.viewDidLoad()
let nibName = UINib(nibName: "NibName", bundle:nil)
self.skillsTable.registerNib(nibName, forCellReuseIdentifier: textCellIdentifier)
}

swift 4

override func viewDidLoad() {
super.viewDidLoad()
let nibName = UINib(nibName: "NibName", bundle:nil)
self.skillsTable.register(nibName, forCellReuseIdentifier: textCellIdentifier)
}

然后只继承 UIViewController 而不是 UITableViewController

调用特定于您的自定义单元格的方法

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(textCellIdentifier, forIndexPath: indexPath) as! SkillViewCell

cell.skillName.text = "Some text"
cell.skillRank.text = "Some text"
return cell
}

关于ios - 将自定义 UITableViewCell 从 nib 加载到 Swift 中的 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34237067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com