2

Я добавил UISearchBar в свой UITableView.UITableView Section выше UISearchBar

// Search Bar 
var leftPosSearchBar: CGFloat = 0 
if (UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Phone) { leftPosSearchBar = 4 } 
self.searchBar = UISearchBar(frame: CGRect(
    x: max(leftPosSearchBar, self.tableView.contentOffset.x + self.tableView.contentInset.right), 
    y: max(0, self.tableView.contentOffset.y + self.tableView.contentInset.top), 
    width: self.view.bounds.width, height: 45)) 
let tableHeaderView: UIView = UIView(frame: self.searchBar.frame) 

tableHeaderView.addSubview(self.searchBar) 
tableHeaderView.bringSubviewToFront(self.searchBar) 

self.tableView.tableHeaderView = tableHeaderView 
self.searchBar.searchBarStyle = UISearchBarStyle.Prominent 
self.searchBar.delegate = self 
self.searchBar.returnKeyType = UIReturnKeyType.Done 
self.searchBar.enablesReturnKeyAutomatically = false 
self.searchBar.translucent = false 

Также добавлен этот короткий фрагмент, чтобы «исправить» UISearchBar сверху на свитке.

func scrollViewDidScroll(scrollView: UIScrollView) { 
    var searchBarFrame:CGRect = self.searchBar.frame 
    searchBarFrame.origin.y = max(0, 
     scrollView.contentOffset.y + scrollView.contentInset.top) 
    self.searchBar.frame = searchBarFrame 
} 

Все работает нормально, пока я не использую разделы в своем UITableView. Затем разделы накладываются на UISearchBar и вставляются в верхнюю часть UITableView. Он должен быть прикреплен к UISearchBar.

enter image description here

ответ

0

Добавить bringSubviewToFront внутри scrollViewDidScroll.

tableHeaderView.bringSubviewToFront(searchBar) 

Я делаю что-то подобное, но с UIView, и это работает для меня.

+0

или попробуйте tableView.bringSubviewToFront (tableHeaderView) –