我试图模仿类似于艺术家的iPod应用程序的表格视图的行为 - 它是一个分段的表格视图,右侧有一个部分索引,顶部有一个搜索栏,但最初在显示视图时隐藏.
我正在使用sdk 3.1.2和IB,所以只需将其UISearchDisplayController拖入我的NIB中 - 它将所有内容连接起来进行搜索.问题开始是因为我正在添加UISearchBar到第一部分UITableView,因为如果我理解正确,我必须这样做,所以我可以直接触摸部分索引中的搜索图标跳转到搜索栏?当表格视图出现时,我看到了搜索栏,但它已经调整大小,我现在在顶部的部分索引后面有一个白色块.它没有采用UISearchBar有趣的界面颜色与Interface Builder中显示的颜色不同.
我找到了一个提示,在a中添加一个小导航栏和UISearchBara UIView,然后将其添加到表格视图单元格中.这样可行,但导航栏背景的颜色通常是您所期望的(灰色),而不是上面提到的不同颜色.更有趣的是,如果我点击搜索栏开始搜索,然后点击取消,一切都是固定的.搜索栏在整个tableview单元格中的背景是一样的吗?
uitableview uisearchbar iphone-sdk-3.0 uisearchdisplaycontroller
使用UISearchDisplayController搜索UITableView时遇到一个奇怪的问题.UITableViewController是另一个UITableViewController的子类,具有有效的didSelectRowAtIndexPath方法.在没有搜索控制器处理选择的情况下,向超类发送一个didSelectRowAtIndexPath调用,但是如果我在搜索超类时选择一个单元,则只会突出显示单元格.下面是我的子类的代码.
@implementation AdvancedViewController
@synthesize searchDisplayController, dict, filteredList;
- (void)viewDidLoad {
[super viewDidLoad];
// Programmatically set up search bar
UISearchBar *mySearchBar = [[UISearchBar alloc] init];
mySearchBar.delegate = self;
[mySearchBar setAutocapitalizationType:UITextAutocapitalizationTypeNone];
[mySearchBar sizeToFit];
self.tableView.tableHeaderView = mySearchBar;
// Programmatically set up search display controller
searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:mySearchBar contentsController:self];
[self setSearchDisplayController:searchDisplayController];
[searchDisplayController setDelegate:self];
[searchDisplayController setSearchResultsDataSource:self];
// Parse data from server
NSData * jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
NSArray * items = [[NSArray alloc] initWithArray:[[CJSONDeserializer deserializer] deserializeAsArray:jsonData error:nil]];
// Init variables
dict = …Run Code Online (Sandbox Code Playgroud) iphone objective-c uitableview didselectrowatindexpath uisearchdisplaycontroller
我目前有一个UISearchBar和UISearchDisplayController实现为:
- (void) viewDidLoad {
videoList = [[NSMutableArray alloc]init];
//Add the search bar
aSearchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
[aSearchBar sizeToFit];
aSearchBar.delegate = self;
aSearchBar.placeholder = @"Search YouTube...";
self.tableView.tableHeaderView = aSearchBar;
searchDC = [[UISearchDisplayController alloc] initWithSearchBar:aSearchBar contentsController:self];
[self performSelector:@selector(setSearchDisplayController:) withObject:searchDC];
searchDC.delegate = self;
searchDC.searchResultsDataSource = self.tableView.dataSource;
searchDC.searchResultsDelegate = self.tableView.delegate;
[aSearchBar release];
[searchDC release];
}
Run Code Online (Sandbox Code Playgroud)
当用户键入内容并点击搜索时,tableView会在后台的tableView上显示.
反正有没有隐藏这个'searchResults tableView'?(我只想让背景表保存数据......它目前正在做什么).
即有财产吗?例如searchDisplayController.tableView.visible = NO或类似的?
我在我的SearchController中使用NSComparisonResult:
for (Annotation *ano in listContent) {
NSComparisonResult result = [ano.title compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
if (result == NSOrderedSame) {
[self.filteredListContent addObject:ano];
}
}
Run Code Online (Sandbox Code Playgroud)
如果我搜索一个字符串,它只会找到以该字符串开头的结果.
记录是" 我的艺术画廊 "
搜索"我的艺术画廊"<---找到
搜索"我的"<---找到
搜索"艺术"<---未找到
搜索"图库"<---未找到
如何更改我的代码,以便我可以找到上面显示的部分字符串?
在我的应用程序中,我必须在tableview的头部添加一个搜索栏.我能够添加搜索栏但问题是没有添加ios的默认搜索栏我可以添加自定义搜索栏吗?我正在给出一张图片,看看会有哪些类型的搜索栏...

iphone uisearchbar uisearchdisplaycontroller uisearchbardelegate ios
我有一个UITableView,顶部有一个搜索栏.我使用UISearchDisplayController来实现相同的功能.它还有一个带两个按钮的示波器栏.默认情况下,当我启动应用程序时,将显示范围栏.当我在搜索后单击取消按钮时,示波器条消失了.因此,即使在我按下"取消"按钮后,还有任何方法可以保留范围栏.我使用了以下代码,但它不起作用.
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar
{
[searchBar setShowsScopeBar:YES];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
iphone cancel-button uitableview uisearchbar uisearchdisplaycontroller
我在数据库中只有3237条记录,我使用UISearchDisplayController和NSFetchedResultsController进行搜索.但是当我为搜索键入关键字时,它非常慢:
2012-06-26 10:26:25.264 KYBD[3863:707] CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZARTICLEPARTCHINESE, t0.ZARTICLEPARTENGLISH, t0.ZARTICLEPARTNUMBER, t0.ZARTICLE FROM ZARTICLECONTENT t0 LEFT OUTER JOIN ZARTICLES t1 ON t0.ZARTICLE = t1.Z_PK WHERE ( NSCoreDataStringSearch( t0.ZARTICLEPARTENGLISH, ?, 257, 0) OR NSCoreDataStringSearch( t0.ZARTICLEPARTCHINESE, ?, 257, 0)) ORDER BY t1.ZARTICLETITLE, t0.ZARTICLEPARTNUMBER
2012-06-26 10:26:26.438 KYBD[3863:707] CoreData: annotation: sql connection fetch time: 0.5325s
2012-06-26 10:26:26.446 KYBD[3863:707] CoreData: annotation: total fetch execution time: 1.1821s for 2549 rows.
2012-06-26 10:26:26.489 KYBD[3863:707] CoreData: sql: SELECT t1.ZARTICLETITLE, COUNT (DISTINCT t0.Z_PK) FROM ZARTICLECONTENT t0 LEFT …Run Code Online (Sandbox Code Playgroud) 我在我的TopBar.m中写UISearchBar是这样的:
_tempSearchBar =[[UISearchBar alloc]initWithFrame:CGRectMake(44, 0, 320 - 44, 43)];
_tempSearchBar.barStyle=UIBarStyleDefault;
_tempSearchBar.placeholder=@"??";
[self addSubview:_tempSearchBar];
Run Code Online (Sandbox Code Playgroud)
结果是这样,是对的.

然后我在另一个类中编写UISearchDisplayController,如下所示:
_topBar.tempSearchBar.delegate = self;
_searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:_topBar.tempSearchBar contentsController:self];
[_searchDisplayController setDelegate:self];
[_searchDisplayController setSearchResultsDataSource:self];
Run Code Online (Sandbox Code Playgroud)
UISearchBarDelegate是这样的:
#pragma mark -
#pragma mark UISearchBarDelegate
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[_searchDisplayController setActive:YES animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
当我单击UISearchBar时,它显示如下,searchBar的框架被更改.为什么?

当我取消UISearchDisplayController时,它是这样的:

为什么框架改变了?UISearchDisplayController的宽度从320-44变为320?
谢谢.
uisearchbar uisearchdisplaycontroller uisearchbardelegate uisearchbardisplaycontrol ios
我有一个实现4个委托的UIViewController:
@interface AllProductsVC : UIViewController <UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate, UISearchDisplayDelegate>{
NSArray *array;
NSMutableArray *searchData;
UISearchBar *searchBar;
UISearchDisplayController *searchDisplayController;
}
@property int numberOfProducts;
@property int productsToLoad;
@property(nonatomic, retain) UITableView *productsTableView;
@property(nonatomic, retain) UISegmentedControl *segmentedControl;
-(IBAction)getProducts;
@end
Run Code Online (Sandbox Code Playgroud)
我的问题是viewcontroller有一个segmentedControl.在搜索期间,如果单击segmentedControl,则视图不会显示导航控制器违反用户与应用程序交互的其他时间.
我试图在搜索过程中隐藏segmentedControl,直到你更改了segmentControl,如果你在搜索没有隐藏之后更改它(搜索之前),我尝试了同样的启用但相同的结果.
有没有办法不隐藏导航控制器?我试图搜索结果,并在stackoverflow上找到其他问题,但没有帮助我.
最好的祝福
我面临一个非常奇怪的问题,我无法UISearchResultsTableView在tableView的框架内滚动到底部,而且contentSize是正确的.
只有在我点击"取消"并输入新的搜索字符串时才会发生这种情况.如果我清除此字符串并再次输入,一切正常.如果我再次单击"取消"并输入新字符串,则无法滚动到底部.在我看来,第二次搜索工作,但我遇到第一次搜索或点击"取消"按钮后出现问题UISearchBar.
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
[self searchForText:searchString];
return YES;
}
- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide) name:UIKeyboardWillHideNotification object:nil];
}
- (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableView
{
tableView.rowHeight = 70;
}
- (void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}
- (void)keyboardWillHide
{
UITableView *tableView = [[self searchDisplayController] searchResultsTableView];
[tableView setContentInset:UIEdgeInsetsZero];
[tableView setScrollIndicatorInsets:UIEdgeInsetsZero];
}
Run Code Online (Sandbox Code Playgroud)
我也把我的分类 UISearchDisplayController
- (void)setActive:(BOOL)visible animated:(BOOL)animated
{
if(self.active == visible) return;
[self.searchContentsController.navigationController setNavigationBarHidden:YES animated:NO];
[super …Run Code Online (Sandbox Code Playgroud)