我正在尝试将我的UISearchbar和UITableView置于彼此之间。我尝试了self.tableview.origin.y = self.searchbar.origin.y + self.searchbar.frame.height
之类的方法,但徒劳无功。在不同的设备模拟器中运行时,tableview只是附加在不同的y位置。我需要以编程方式完成此操作,因为我已经以这种方式创建了表格视图。
func viewDidLoad(){
recentSearchesTableView.frame = CGRect(x: 0, y: 200, width: view.frame.width, height: view.frame.height)
recentSearchesTableView.delegate = self
recentSearchesTableView.dataSource = self
recentSearchesTableView.register(UITableViewCell.self, forCellReuseIdentifier: "RecentSearchCell")
recentSearchesTableView.tag = 202
recentSearchesTableView.isUserInteractionEnabled = true
recentSearchesTableView.tableFooterView = UIView()
}
编辑:事实证明recentSearchesTableView.frame.origin.y = searchBar.frame.origin.y + searchBar.frame.height
可以在iPhone X以下的所有设备上完美运行,但在iPhone X及更高版本上的搜索栏和表格视图重叠:/
答案 0 :(得分:1)
向表视图添加搜索栏的最佳方法是使用UISearchController
。
override func viewDidLoad() {
super.viewDidLoad()
// You may need this for presenting the search controller
definesPresentationContext = true
searchController = UISearchController(searchResultsController: nil)
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchResultsUpdater = self
searchController.delegate = self
if #available(iOS 11.0, *) {
navigationItem.searchController = searchController
// navigationItem.hidesSearchBarWhenScrolling = false
} else {
tableView.tableHeaderView = searchController.searchBar
}
}
这将使管理逻辑和显示搜索结果更加容易。
答案 1 :(得分:0)
尝试对搜索字段和表格视图使用此约束。
//这将搜索顶部,领先,尾随和50.0高度限制
searchField.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
searchField.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
searchField.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
searchField.heightAnchor.constraint(equalToConstant: 50.0).isActive = true
// Tableview顶部,顶部,底部和底部约束
tblExpand.topAnchor.constraint(equalTo: searchField.bottomAnchor).isActive = true
tblExpand.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
tblExpand.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
tblExpand.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
答案 2 :(得分:0)
也许您可以尝试对tableView执行此操作
SELECT
id
,value
,acc_no
,value - isnull(sum([value]) over (partition by acc_no order by id rows between 1 preceding and 1 preceding ), 0) as result
FROM tb_acc t
order by id