这可能是更好的方法,但我一整天都在谷歌搜索,无法找到解决我特定问题的方法:
我有一个静态TableView,它显示了大量的信息,并包含一个文本输入部分,用于将值添加到嵌套在父静态TableView的一个单元格中的动态TableView。
为此,我在UITableViewController中有一个UITableViewDataSource和UITableViewDelegate的子类,它将控制嵌套TableView中显示的内容。我有一个嵌套表的出口:
@IBOutlet weak var validatedCardsTable: UITableView!
在我的viewDidLoad
中:
let dataSource = ValidatedCardsDataSource(tableView: self.validatedCardsTable)
self.validatedCardsTable.dataSource = dataSource
self.validatedCardsTable.delegate = dataSource
我的子类看起来像这样:
class ValidatedCardsDataSource :NSObject, UITableViewDataSource, UITableViewDelegate {
var tableView:UITableView
init(tableView : UITableView) {
self.tableView = tableView
super.init()
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 100
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return 1
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as UITableViewCell
cell.textLabel!.text = "Title of Row: #\(indexPath.row)"
return cell
}
}
当我运行此代码时,嵌套的TableView会加载相应的"行标题"我在cellForRowAtIndexPath
中设置的文字(虽然表格视图不会调整大小,但我确定这是另一个问题)。但是,当我在任何地方按下TableView时,我指定了一个标签" A Label"在我的故事板中的单元格原型中也显示在单元格上,然后当我释放按下时,所有格式化都会消失,单元格将恢复为默认状态。我假设我没有在某个地方完全挂钩,但是你可以提供任何帮助来追踪我做错了什么,或者建议一个更好的办法来处理这个问题,我将不胜感激!屏幕截图如下:
原型细胞:
加载显示的内容:
触地显示的内容:
触摸显示的内容:
答案 0 :(得分:1)
覆盖你的单元格方法“touchesBegan:withEvent:/ touchesEnded:withEvent:/ touchesCancelled:withEvent:” 当单元格被触及/向上/向上/向上时,改变UI样式。
答案 1 :(得分:0)
经过一些更多的实验,我能够弄明白!回顾它似乎很明显,但是当我实例化我的数据源时,我正在做一些奇怪的循环引用荒谬。我删除了init
函数,以及我在dataSource子类中使用的tableView参数的引用。这就是我的dataSource类现在的样子:
let dataSource = ValidatedCardsDataSource()
self.validatedCardsTable.dataSource = dataSource
self.validatedCardsTable.delegate = dataSource
class ValidatedCardsDataSource :NSObject, UITableViewDataSource, UITableViewDelegate {
var selectedRow = 0
let rowCount = 10
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 100.0
}
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 100.0
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return 1
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as UITableViewCell
cell.textLabel!.text = "Title of Row: #\(indexPath.row)"
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print(indexPath.row)
self.selectedRow = indexPath.row
tableView.reloadData()
}
}
现在我只需要弄清楚我的约束......感谢您的回复!