PGD*_*Dev 14 uitableview xib ios swift
我正面临一个问题
我有一个NNVerticalStackTableViewCell.xib文件及其相应的NNVerticalStackTableViewCell.swift文件.
NNVerticalStackTableViewCell.swift文件代码
class NNVerticalStackTableViewCell: UITableViewCell
{
//MARK: Outlets
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var verticalStack: NNVerticalStackView!
//MARK: Internal Properties
var titleString : String?
{
set{
self.titleLabel.text = newValue
}
get{
return self.titleLabel.text
}
}
//MARK: View Lifecycle Methods
override func awakeFromNib()
{
super.awakeFromNib()
self.titleLabel.text = nil
}
//MARK: Internal Methods
func addViewsInVerticalStack(viewsArray : [UIView])
{
for view in viewsArray
{
self.verticalStack.insertStackItem(view)
}
}
}
Run Code Online (Sandbox Code Playgroud)
NNVerticalStackTableViewCell.xib文件界面
与class nameas:NNVerticalStackTableViewCell和cell identifieras:NNVerticalStackTableViewCell
现在我创建了一个子类NNVerticalStackTableViewCell:
class NNPropertiesUnderProjectTableViewCell: NNVerticalStackTableViewCell
{
//MARK: Internal Properties
var completionHandler : ((NNSearchPreference) -> Void)?
//MARK: Internal Methods
func configureCell(_ propertiesUnderProjectArray : [[String : Any]])
{
var viewsArray = [UIView]()
for dict in propertiesUnderProjectArray
{
let elementView = NNPropertiesUnderProjectElementView.loadFromNib()
elementView?.configureViewWith(buttonTitleString: dict["displayString"] as! String, searchPreference: dict["searchPreference"] as! NNSearchPreference, completionHandler: {[weak self] (searchPreference) in
if let handler = self?.completionHandler
{
handler(searchPreference)
}
})
viewsArray.addObject(elementView)
}
self.addViewsInVerticalStack(viewsArray: viewsArray)
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想做的是使用NNPropertiesUnderProjectTableViewCell带NNVerticalStackTableViewCell.xib接口的类.
与NNPropertiesUnderProjectTableViewCell类I 类似,有许多其他类使用相同的接口,NNVerticalStackTableViewCell.xib并相应地对其进行自定义.
在我ViewController,我注册NNVerticalStackTableViewCell.xib,然后创建单元格:
self.tableView.register(UINib(nibName: "NNVerticalStackTableViewCell"), forCellReuseIdentifier: "NNVerticalStackTableViewCell")
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let propertiesUnderProjectCell = tableView.dequeueReusableCell(withIdentifier: "NNVerticalStackTableViewCell", for: indexPath as IndexPath) as! NNPropertiesUnderProjectTableViewCell
}
Run Code Online (Sandbox Code Playgroud)
但是,我得到了例外:
Could not cast value of type 'NNVerticalStackTableViewCell' (0x100945878) to 'NNPropertiesUnderProjectTableViewCell' (0x100949330).
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议如何解决问题.我想使用单一.xib,不想重复代码.
但是,您可以UITableViewCell使用类似的,而不是使用UIView
为单元格内容视图创建一个xib,给它一个类(如CellView).在每个单元类中,获取CellViewwith loadNibNamed并将其设置为单元格内容视图,然后您可以自由更改其属性CellView并将其用作其他单元类的内容视图
也许有更好的解决方案,但这就是我为类似的外观做的方式UIViewController,你也可以在故事板中尝试没有类设置的单元格xib并尝试加载它并查看错误是否仍然存在
| 归档时间: |
|
| 查看次数: |
2065 次 |
| 最近记录: |