Swift ScrollView中的TableView中的按钮未触发
我在滚动视图中有2个表视图:Swift ScrollView中的TableView中的按钮未触发,swift,xcode,button,tableview,scrollview,Swift,Xcode,Button,Tableview,Scrollview,我在滚动视图中有2个表视图: 无法滚动TableView,它将显示所有行 两个表视图都有带有按钮的自定义单元格 按下TableView2中的按钮将向TableView1添加一行 问题: 1) 首先,按下TableView2中的按钮将执行服务调用,然后将单元格添加到TableView1 2) 但是我注意到,一旦TableView1扩展到占据屏幕的高度,我向下滚动以访问TableView2,按下TableView2上的按钮将不再注册任何内容。它根本就不会触发动作。这是一个想法,我认为可能是问题,但不
extension MyFeedViewController: UITableViewDelegate,UITableViewDataSource{
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
if tableView == self.tableView1
{
return tableView1Array.count
}
else
{
return tableView2Array.count
}
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
if tableView == self.tableView1
{
let cell:TableView1Cell = self.tableView1.dequeueReusableCell(withIdentifier: "TableView1Cell", for: indexPath) as! cell:TableView1Cell
cell.updateCell(withObject:)
cell.delegate = self
return cell
}
else
{
let cell:TableView2Cell = self.tableView2.dequeueReusableCell(withIdentifier: "TableView2Cell", for: indexPath) as! TableView2Cell
cell.updateCell(withObject:withType)
cell.delegate = self
return cell
}
}
public func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
if tableView == self.tableView1
{
return CGFloat(80)
}
else
{
return CGFloat(60)
}
}
}
从服务器获得成功响应后,我会触发scrollView的重新计算,如下所示:
override func viewDidLayoutSubviews()
{
refreshTableHeights()
}
//Called when a success server call is made
func refreshTableHeights()
{
//Update table height
if tableView1Array.count > 0
{
tableView1HeightConstraint.constant = CGFloat(tableView1Array.count * 80)
}
else
{
tableView1HeightConstraint.constant = CGFloat(80)
}
if tableView2Array.count > 0
{
tableView2HeightConstraint.constant = CGFloat(tableView2Array.count * 60)
}
else
{
tableView2HeightConstraint.constant = CGFloat(60)
}
view.layoutIfNeeded()
//Set content view
let extraSpace = CGFloat(200)
contentView.frame.size.height = tableView1.frame.size.height + tableView2.frame.size.height + extraSpace
scrollView.contentSize = contentView.frame.size
}
一些其他注释:
通过在模拟器中运行来捕获您的界面。
查看按钮是否在其superview的框架内,如果视图在其superview之外,则视图上的触摸操作不响应。通过在模拟器中运行来捕获您的界面。
查看按钮是否在其superview的框架内,如果视图在其superview之外,则触摸视图上的操作不会响应。能否更具体地说明手动更新表格视图高度的原因?另外,通过在模拟器中运行自定义单元类,可以查看自定义单元类的外观。“查看”按钮是否在其superview的框架中。如果视图超出其superview,则视图上的触摸操作不会响应。@Naresh谢谢,这是我的问题。我的contentview有一个限制,它在滚动滚动视图时重置contentview高度。不客气,我写它是为了回答您的问题。您能更具体地说明为什么要手动更新表视图高度吗?另外,通过在模拟器中运行自定义单元类,可以查看自定义单元类的外观。“查看”按钮是否在其superview的框架中。如果视图超出其superview,则视图上的触摸操作不会响应。@Naresh谢谢,这是我的问题。我的contentview有一个限制,当滚动视图时,它会重置contentview的高度。不客气,我把它写下来作为一个答案。