Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift ScrollView中的TableView中的按钮未触发_Swift_Xcode_Button_Tableview_Scrollview - Fatal编程技术网

Swift ScrollView中的TableView中的按钮未触发

Swift ScrollView中的TableView中的按钮未触发,swift,xcode,button,tableview,scrollview,Swift,Xcode,Button,Tableview,Scrollview,我在滚动视图中有2个表视图: 无法滚动TableView,它将显示所有行 两个表视图都有带有按钮的自定义单元格 按下TableView2中的按钮将向TableView1添加一行 问题: 1) 首先,按下TableView2中的按钮将执行服务调用,然后将单元格添加到TableView1 2) 但是我注意到,一旦TableView1扩展到占据屏幕的高度,我向下滚动以访问TableView2,按下TableView2上的按钮将不再注册任何内容。它根本就不会触发动作。这是一个想法,我认为可能是问题,但不

我在滚动视图中有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
    }
    
    一些其他注释:

  • 表格高度在我的IB中是固定的,因此我会通过代码手动更改表格视图的高度约束
  • 带有iAction的按钮在其自定义单元格中定义。按下TableView 2中的一个按钮将触发一个代表回拨给我的VC进行服务调用

    如果有人能在我迷路的时候给我指出正确的方向,那就太好了。谢谢


  • 通过在模拟器中运行来捕获您的界面。
    查看按钮是否在其superview的框架内,如果视图在其superview之外,则视图上的触摸操作不响应。

    通过在模拟器中运行来捕获您的界面。
    查看按钮是否在其superview的框架内,如果视图在其superview之外,则触摸视图上的操作不会响应。

    能否更具体地说明手动更新表格视图高度的原因?另外,通过在模拟器中运行自定义单元类,可以查看自定义单元类的外观。“查看”按钮是否在其superview的框架中。如果视图超出其superview,则视图上的触摸操作不会响应。@Naresh谢谢,这是我的问题。我的contentview有一个限制,它在滚动滚动视图时重置contentview高度。不客气,我写它是为了回答您的问题。您能更具体地说明为什么要手动更新表视图高度吗?另外,通过在模拟器中运行自定义单元类,可以查看自定义单元类的外观。“查看”按钮是否在其superview的框架中。如果视图超出其superview,则视图上的触摸操作不会响应。@Naresh谢谢,这是我的问题。我的contentview有一个限制,当滚动视图时,它会重置contentview的高度。不客气,我把它写下来作为一个答案。