我在导航控制器中有一个UITableViewController,带有一个搜索栏。这是我在viewDidLoad中添加搜索栏的方式:
let resultsController = SearchTableViewController()
resultsController.people = people
searchController = UISearchController(searchResultsController: resultsController)
let searchBar = searchController.searchBar
searchBar.placeholder = "Search a person"
searchBar.sizeToFit()
tableView.tableHeaderView = searchBar
searchController.searchResultsUpdater = resultsController
结果如下:
我尝试在故事板中编辑表格视图以添加约束以使其从顶视图的边距更远,但我无法添加约束,可能是因为表格视图位于UITableViewController中。
答案 0 :(得分:7)
我认为您需要此代码。
在viewDidLoad
方法中添加以下代码:
self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0)
你的桌面视图将是这样的:
修改强>
您可以使用以下代码强制滚动表格:
tableView.scrollToRowAtIndexPath( NSIndexPath(index: 0), atScrollPosition: UITableViewScrollPosition.Top, animated: false)
答案 1 :(得分:1)
我知道你在swift中编写代码,但这就是你在objectiveC中隐藏状态栏的方法
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
// iOS 7
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
} else {
// iOS 6
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}
}
// Add this Method
- (BOOL)prefersStatusBarHidden
{
return YES;
}
中的答案
答案 2 :(得分:0)
尝试在 AppDelegate 类
中 didFinishLaunching 中添加以下代码在swift中 -
var version = ( UIDevice.currentDevice().systemVersion as NSString ).floatValue
if (version >= 7) {
application.setStatusBarStyle( UIStatusBarStyle.LightContent, animated: true);
window?.clipsToBounds = true;
window?.frame = CGRectMake(0,20,self.window!.frame.size.width,self.window!.frame.size.height-20);
}
在Objective-c -
中 if (UIDevice.currentDevice.systemVersion] floatValue] >= 7) {
[application setStatusBarStyle:UIStatusBarStyleLightContent];
self.window.clipsToBounds =YES;
self.window.frame = CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}
并在 ViewController 类 -
中添加以下方法目标-C -
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
迅速 -
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
答案 3 :(得分:0)
添加UISearchControllerDelegate;
然后
-(void)willDismissSearchController:(UISearchController *)searchController{
_tableView.contentInset = UIEdgeInsetsMake(20, 0, 44, 0);}