【问题标题】:How do i hide UISearchbar on load from storyboard如何从情节提要中隐藏 UISearchbar
【发布时间】:2013-01-01 07:02:24
【问题描述】:

这更多的是外观问题。

我通过情节提要添加了一个搜索栏,我想用情节提要隐藏以下内容。

我以前可以使用故事板出现之前的代码来做到这一点。

如果使用情节提要可以实现,任何人都可以指出正确的方向吗?

干杯, 兰斯

【问题讨论】:

    标签: ios5 uisearchbar xcode-storyboard


    【解决方案1】:

    在故事板上,选择搜索栏并打开右侧的对象检查器。在它们中,您会发现一个名为“隐藏”的属性。选中该框,在情节提要初始化时,对象将被隐藏。

    如果您从搜索栏中按住 ctrl 并在视图控制器中创建一个属性,您就可以在代码中控制隐藏标志。因此,您可以在需要时让它重新出现,例如:

    self.searchbar.hidden = NO;
    

    2013 年 1 月 2 日编辑 - 这是一种不同的方法。 清单:

    a) 在情节提要的 tableview 标题视图中添加搜索栏。将该搜索栏链接到名为 searchBar 的属性。当你链接它时,xcode 会给它一个弱引用,把弱引用改成强引用。例如:

    @property (strong, nonatomic) IBOutlet UISearchBar *searchBar; 
    

    b)添加一个名为 showSearch 的 BOOL 属性来控制搜索栏的显示和隐藏。

    @property (nonatomic) BOOL showSearch;
    

    c)将以下方法添加到您的控制器代码中

    - (void)setShowSearch:(BOOL)showSearch {
    
        _showSearch = showSearch;
    
        if (! _showSearch) {
            self.tableView.tableHeaderView = nil;
        }
        [self.tableView reloadData];
    
    }
    
    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection: (NSInteger)section
    {
        if (self.showSearch && self.tableView.tableHeaderView == nil) {
            return self.searchBar.frame.size.height;
        }
    return 0;
    }
    
    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
    {
        if (self.showSearch && self.tableView.tableHeaderView == nil) {
           return self.searchBar;
        }
        return nil;
    }
    

    默认情况下,这将从显示搜索栏开始。如果您想从隐藏开始,只需将以下内容添加到您的 viewDidLoad 方法中:

    self.showSearch = NO;
    

    祝你好运,新年快乐!

    【讨论】:

    • 是的,这是可行的,但 tableview 不会填满 uisearchbar 先前持有的空间。
    • 如果您仍在寻找解决方案,我添加了一种不同的方法,应该更适合您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 2020-12-15
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    相关资源
    最近更新 更多