如何覆盖" searchBar" UISearchController的子类中的属性?

时间:2016-09-02 09:30:46

标签: ios objective-c properties uisearchbar uisearchcontroller

我有这样的问题:Hide UISearchBar Cancel Button

我已将[{1}}和UISearchController分组,并覆盖UISearchBar中的方法layoutSubviews

如何在自定义UISearchBar中使用自定义searchBar覆盖UISearchBar媒体资源?

更新1

要使用UISearchController中的自定义UISearchBar实现属性:

MyUISearchController

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

@synthesize searchBar=_searchBar; - (UISearchBar *)searchBar { return [MySearchBar new]; } 无论如何都使用默认UISearchController

更新

searchBar档案中:

h

@interface MySearchController : UISearchController <UITableViewDelegate, UITableViewDataSource> 档案中:

m

4 个答案:

答案 0 :(得分:3)

UISearchController的searchBar是一个计算属性,您必须存储自定义searchBar并在调用searchBar时返回它。

以下是Swift中的一些代码:

var mySearchBar = MySearchBar()

override var searchBar: UISearchBar {
    get{
        return mySearchBar;
    }
}

答案 1 :(得分:1)

为了自定义searchBar属性,首先通过子类化搜索栏(UISearchBar)来开始自定义过程。然后,在搜索控制器的子类中使用此自定义搜索栏,最后在ViewController类中使用它们。

参考本教程: UISearchController Customization

答案 2 :(得分:0)

import UIKit

class MySearchController: UISearchController {

    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        searchBar.showsCancelButton = false
    }
}

答案 3 :(得分:0)

请参阅本教程,了解如何在Swift中自定义UISearchBar:

Customise UISearchBar

目标 - C :在ViewDidLoad中添加代码。您已经声明了UISearchBar

的对象
[searchBar setShowsCancelButton:NO]; 

Swift :在ViewDidLoad中

searchBar.showsCancelButton = false

Image