在带有searchBar的tableViewController中,我使用以下方法:
-(void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
...my code
}
当我直接在searchBar中键入文本时,它工作得很好。
我现在遇到的问题是,我想用程序调用这个方法——这意味着我想从我知道如何做的代码中填充搜索栏(实际上,我在语言词典应用程序中选择了一个最近搜索的单词),并调用类似的东西:
[SearchBar textDidChange: recentlySearchedWord]
但这在我的代码中根本不起作用。
如果你知道如何解决这个问题,请帮助我。
谢谢,
Tim
如果您在视图控制器(或任何类)中实现UISearchBar的委托方法- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
,并且您想从同一类中调用该方法,我假设这就是您想要做的,那么您必须调用
[self searchBar:SearchBar textDidChange:recentlySearchedWord];
SearchBar是您所引用的UISearchBar的实例。
textDidChange不是一个类方法。因此,与其呼叫:
[SearchBar textDidChange: recentlySearchedWord];
调用
[self searchBar:mySearchBar textDidChange: recentlySearchedWord];
或者,如果textDidChange在不同的类中,则使用类实例代替self。
如果这段代码更容易,您也可以尝试使用它。
<!DOCTYPE html>
<html>
<head>
<style>
input[type=text] {
width: 100%;
box-sizing: border-box;
border: 2px solid #ccc;
border-radius: 4px;
font-size: 16px;
background-color: white;
background-image: url('searchicon.png');
background-position: 10px 10px;
background-repeat: no-repeat;
padding: 12px 20px 12px 40px;
}
</style>
</head>
<body>
<p>Input with icon:</p>
<form>
<input type="text" name="search" placeholder="Search..">
</form>
</body>
</html>