【发布时间】:2015-08-31 07:37:30
【问题描述】:
当我点击我的搜索栏时,我会在搜索栏下方获得额外的填充。我确实设置了自定义高度,但即使我尝试恢复默认高度,它也会给我同样的问题。我现在添加了下面的代码。我在情节提要中没有任何搜索栏。我使用下面的代码创建它
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()
}
【问题讨论】:
-
有代码供我们审核吗?
-
添加在上面!我在情节提要中没有任何搜索栏。我用代码创建它!感谢您的帮助,我花了 2 天时间查看所有在线帖子和教程。
-
您是否尝试过视图调试器来确定哪个视图的大小不正确?它可以是各种各样的东西,例如您的表格视图显示不正确,您可能使用白色背景实现了 heightForHeaderInSection 方法等。从您的代码 sn-p 很难分辨。尝试转到 Debug > View Debugging > Capture View Hierarchy,看看你是否可以使用它来确定问题。
-
我确实检查并在捕获视图层次结构中添加了 UIView,这似乎增加了额外的空间。所以我尝试只删除表格视图并重新编程。然后我尝试删除整个 Table View Controller 仍然没有运气。
标签: ios xcode swift uitableview uisearchbar