TableView的UIView无法滚动或点按

时间:2017-08-28 06:50:03

标签: ios iphone swift xcode uitableview

我所做的是点击搜索控制器时,它会显示一个带有tableView的视图。 (比如Instagram)。 它显示了tableView但它无法与之交互。

我做了一些研究,因为人们在此之前遇到过这个问题。 以下是我尝试的内容

  
      
  • 将subView置于前面
  •   
  • 已设置tableView.isUserInteractionEnabled = true - >也跑了iPhone
  •   
  • 已将tableViewHeight设置为ScreenHeight
  •   

但是tableView仍然不想滚动/点击!

这里有相关代码,如果它有帮助, 带搜索栏和集合视图的控制器

class UserSearchController: UICollectionViewController, UICollectionViewDelegateFlowLayout,UISearchBarDelegate, UISearchDisplayDelegate {

let cellId = "cellId"

let searchBar: UISearchBar = {
    let sb = UISearchBar()
    sb.placeholder = "Search"
    return sb
}()
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
    searchBar.setShowsCancelButton(true, animated: true)
    tableView.isHidden = false
}

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    searchBar.setShowsCancelButton(true, animated: true)

}

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    searchBar.resignFirstResponder()
    searchBar.setShowsCancelButton(false, animated: true)
    searchBar.text = ""
    tableView.isHidden = true
}

let tableView: UIView = {
    let tv = SearchUsersTv()
    tv.isUserInteractionEnabled = true
    tv.bringSubview(toFront: tv)
    tv.clipsToBounds = false
    return tv
}()

override func viewDidLoad() {
    super.viewDidLoad()

    collectionView?.register(UserProfileVideoCell.self, forCellWithReuseIdentifier: cellId)

    view.addSubview(tableView)
    tableView.isHidden = true
}

以下是tableView(SearchUsersTv)相关代码的代码:

class SearchUsersTv: UIView, UITableViewDelegate, UITableViewDataSource {

let cellId = "cellId"
var tableView = UITableView()

override init(frame: CGRect){
    super.init(frame: frame)
    setupTv()
}

func setupTv() {
    let screenHeight = UIScreen.main.bounds.height
    let screenWidth = UIScreen.main.bounds.width
    tableView.delegate = self
    tableView.dataSource = self
    tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellId)
    tableView.isUserInteractionEnabled = true
    tableView = UITableView(frame: CGRect(x: 0, y: 0, width: screenWidth, height: screenHeight))
    self.addSubview(tableView)
    bringSubview(toFront: tableView)
}
  

要解决的问题:让tableView滚动并单击

先谢谢你!

1 个答案:

答案 0 :(得分:1)

您的问题是您正在以错误的方式初始化自定义类,需要调用SearchUsersTv(frame:而不是SearchUsersTv()进行初始化,因为所有的tableView设置都发生在setupTv()上仅SearchUsersTv(frame:初始化

用此

替换您的tableView内嵌创建
let tableView: UIView = {
    let screenHeight = UIScreen.main.bounds.height
    let screenWidth = UIScreen.main.bounds.width
    let tv = SearchUsersTv(frame: CGRect(x: 0, y: 0, width: screenWidth, height: screenHeight))
    tv.isUserInteractionEnabled = true
    tv.bringSubview(toFront: tv)
    tv.clipsToBounds = false
    tv.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cellId")
    return tv
}()