从“ UIViewController”进行Swift Cast?无关类型“ TableViewCell”始终失败

时间:2019-03-25 07:20:33

标签: swift uitableview

我在secondtableview中实现了firsttableview -> firsttableviewcell.

我想访问firsttableviewcellsecondtableviewcell的功能。

我已经实现了访问parentView (firsttableviewcell)的函数,并且发生了错误。

UiView中:

var parentViewController: UIViewController? 
{
    var parentResponder: UIResponder? = self
    while parentResponder != nil {
        parentResponder = parentResponder!.next
        if let viewController = parentResponder as? UIViewController {
            return viewController
        }
    }
    return nil
}

secondtableviewcell中:

if let myViewController = self.parentViewController as? firsttableviewcell
{
    myViewController.getNextPage()
}

firsttableviewcell中:

class firsttableviewcell: UITableViewCell, UITableViewDelegate, UITableViewDataSource {
    ...
}

我在secondtableviewcell中出错。

  

是否从“ UIViewController”投射?无关类型“ FirstTableViewCell”始终失败

导入父视图时如何获取单元格视图?

2 个答案:

答案 0 :(得分:0)

您试图做什么似乎还不清楚,但是 您要展开self.parentViewController,然后将其as? firsttableviewcell强制转换为UIViewController,则不能强制转换为UITableViewCell

答案 1 :(得分:0)

您可以通过迭代 secondtableviewcell 的所有超级视图并检查该超级视图的类,从 secondtableviewcell 访问 firsttableviewcell 。下面提到的代码。

func getFirstTableViewCell() -> UITableViewCell? {
        var view = self.superview
        while (view != nil && view!.isKind(of: UITableViewCell.self) == false) {
            view = view!.superview
        }
        return view as? UITableViewCell
}
  

secondtableviewcell 中的代码:

注意:我添加了一个按钮动作,然后单击它会给你firsttableviewcell

@IBAction func buttonPressed(_ sender: Any) {
        getSuperCell()
}