当我点击我的搜索栏时,我会在搜索栏下方获得额外的填充。我确实设置了自定义高度,但即使我尝试恢复到默认高度,它也会给我同样的问题。我现在添加了下面的代码。我在 Storyboard 中没有任何搜索栏。我使用以下代码创建它
import UIKit
class TableViewController: UITableViewController, UISearchResultsUpdating {
var modelData: NSMutableArray = []
var filteredData: NSMutableArray = []
var resultSearchController = UISearchController()
override func viewDidLoad() {
super.viewDidLoad()
self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
self.tableView.tableHeaderView = controller.searchBar
return controller
})()
// Reload the table b
tableView.reloadData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// 1
// Return the number of sections.
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// 2
if (self.resultSearchController.active) {
return self.filteredData.count
}
else {
return self.modelData.count
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("detailLabels") as! TableViewCell
// 3
if (self.resultSearchController.active) {
let data = self.filteredData[indexPath.row] as? [String: String]
cell.newNameLabel?.text = data?["Name"]
cell.newSizeLabel?.text = data?["Size"]
cell.newPriceLabel?.text = data?["Price"]
return cell
}
else {
let data = self.modelData[indexPath.row] as? [String: String]
cell.nameLabel?.text = data?["Name"]
cell.sizeLabel?.text = data?["Size"]
cell.priceLabel?.text = data?["Price"]
return cell
}
}
func updateSearchResultsForSearchController(searchController: UISearchController)
{
filteredData.removeAllObjects()
let searchPredicate = NSPredicate(format: "Name CONTAINS %@", searchController.searchBar.text)
let array = (modelData as NSArray).filteredArrayUsingPredicate(searchPredicate)
println(array)
filteredData.addObjectsFromArray(array)
tableView.reloadData()
}
最佳答案
假设表格 View 在搜索栏下方扩展,您的表格 View Controller 很可能会自动调整 ScrollView 插图。看起来您没有在搜索栏下方扩展您的表格 View ,因此表格 View Controller 不应自动调整插图。
尝试在 viewDidLoad
中添加以下行。
self.automaticallyAdjustsScrollViewInsets = false
这会阻止 tableview Controller 调整 scrollview insets,应该可以解决你的错误。
关于ios - 搜索栏在单击时添加额外的填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30851420/