【发布时间】:2017-01-24 20:22:52
【问题描述】:
我有一个表格视图,其中的单元格由 UIStackViews 填充,按钮为排列子视图,由几个函数创建。 stackView 中的顶视图是可见的,所有其他视图都是隐藏的,顶视图中的按钮有一个动作,当它被调用时,其他视图应该在可见和隐藏之间切换。
func generateButtons() -> [[UIButton]]{
var topButtonArray = [UIButton]()
var finalButtonArray = [[UIButton]]()
for title in array1 {
topButtonArray.append(createButton(title: title , action: "buttonPressed"))
}
for button in topButtonArray {
var buttonArray = [UIButton]()
buttonArray.append(button)
for title in array2 {
buttonArray.append(createButton(title: title, action: "moveOn"))
}
finalButtonArray.append(buttonArray)
}
return finalButtonArray
}
func generateStackViews() -> [UIStackView] {
stackViewArray = [UIStackView]()
let finalButtonArray = generateButtons()
for buttons in finalButtonArray{
stackViewArray.append(createStackView(subViews: buttons))
}
for stackView in stackViewArray{
let views = stackView.arrangedSubviews
let hiddenViews = views[1..<views.count]
for views in hiddenViews{
views.isHidden = true
}
}
return stackViewArray
}
func buttonPressed(){
//let stackViewArray = generateStackViews()
for stackView in stackViewArray{
let views = stackView.arrangedSubviews
let hiddenViews = views[1..<views.count]
for view in hiddenViews {
if view.isHidden == true{showViews(view: view)} else{hideViews(view: view)}
}
}
}
func showViews(view : UIView){
UIView.animate(withDuration: 0.3) {
view.isHidden = false
}
}
func hideViews(view : UIView) {
UIView.animate(withDuration: 0.2) {
view.isHidden = true
}
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "First")!
let stackViewArray = generateStackViews()
cell.contentView.addSubview(stackViewArray[indexPath.row])
return cell
}
现在发生的事情是只有最后一个单元格中的隐藏视图在可见和隐藏之间切换(无论我点击哪个单元格) - 我想我需要实例化所有单元格上的切换但我想不出办法这样做。
另一个问题是我希望顶视图只打开其单元格中的隐藏视图,我认为我需要在“cellForRowAt indexPath”之外以某种方式使用 indexPath.row。
【问题讨论】:
标签: ios swift uitableview swift3 uistackview