ios - 如何以编程方式在 UITableViewController 的 NavigationBar 内设置 UISearchDisplayBar

标签 ios objective-c uitableview uisearchbar

我目前有一个 TableView Controller ,并在界面生成器内的 TableView Controller 顶部或上方放置了一个 UISearchDisplayController。在我的实现文件的 viewDidLoad 中,我继续将搜索栏分配给 navigationItem.titleView。我现在遇到的问题是第一个 TableView 单元格中有更多空间,因为它仍然认为 searchdisplaycontroller 在那里。你可以在这里看到它:http://imgur.com/u6cQew2

代码如下:

.h文件

@interface searchTableViewController : UITableViewController <UISearchBarDelegate>
{
    UISearchBar *searchDrugBar;
}
@property (nonatomic, strong) IBOutlet UISearchBar *searchDrugBar;

.m文件

- (void)viewDidLoad
{
    [super viewDidLoad];
    searchDrugBar.placeholder = @"Search for info";

    self.navigationItem.titleView = self.searchDisplayController.searchBar;
    [self.searchDisplayController setActive: YES animated: YES];
    [self.searchDisplayController.searchBar becomeFirstResponder];

}

有什么建议或想法吗?提前致谢!

最佳答案

尝试以编程方式创建搜索栏,除非您有自己的理由,否则我看不到在 Storyboard中创建它有任何附加值。

首先将其从 Storyboard中删除,然后:

- (void)viewDidLoad
{
    [super viewDidLoad];

    searchDrugBar = [[UISearchBar alloc] init];
    searchDrugBar.frame = CGRectMake(0, 0, 200,44); // it could be unnecessary
    searchDrugBar.delegate = self;
    searchDrugBar.placeholder = @"Search for info";

    self.navigationItem.titleView = self.searchDisplayController.searchBar;
    [self.searchDisplayController setActive: YES animated: YES];
    [self.searchDisplayController.searchBar becomeFirstResponder];

}

关于ios - 如何以编程方式在 UITableViewController 的 NavigationBar 内设置 UISearchDisplayBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19148937/

相关文章:

iphone - 在 iOS 中获取文件类型(音频或视频)

iphone - 突破多个循环

ios - Tesseract OCR iOS 图片格式

objective-c - 如何在 Mac 上下载时停止删除文件

ios - 在 iOS 7 中根据单元格的文本计算单元格高度

ios - 子类化 UITableViewCell & [tableView dequeueReusableCellWithIdentifier :CellIdentifier]

ios - 如何停止以大于屏幕高度的单元格为中心的滚动

ios - 使用 SKLabel 文本裁剪 SKTexture

ios - MKMapView 中带有自定义精度圆的自定义用户位置标记

ios - 奇怪的 plist 行为在第一个值上返回 null 而在应该为 12 时返回 13 结果