标签: uisearchdisplaycontroller

UITearchBar在UITableView中

我试图模仿类似于艺术家的iPod应用程序的表格视图的行为 - 它是一个分段的表格视图,右侧有一个部分索引,顶部有一个搜索栏,但最初在显示视图时隐藏.

我正在使用sdk 3.1.2和IB,所以只需将其UISearchDisplayController拖入我的NIB中 - 它将所有内容连接起来进行搜索.问题开始是因为我正在添加UISearchBar到第一部分UITableView,因为如果我理解正确,我必须这样做,所以我可以直接触摸部分索引中的搜索图标跳转到搜索栏?当表格视图出现时,我看到了搜索栏,但它已经调整大小,我现在在顶部的部分索引后面有一个白色块.它没有采用UISearchBar有趣的界面颜色与Interface Builder中显示的颜色不同.

我找到了一个提示,在a中添加一个小导航栏和UISearchBara UIView,然后将其添加到表格视图单元格中.这样可行,但导航栏背景的颜色通常是您所期望的(灰色),而不是上面提到的不同颜色.更有趣的是,如果我点击搜索栏开始搜索,然后点击取消,一切都是固定的.搜索栏在整个tableview单元格中的背景是一样的吗?

uitableview uisearchbar iphone-sdk-3.0 uisearchdisplaycontroller

3
推荐指数
1
解决办法
4341
查看次数

为什么我的UISearchDisplayController不会触发didSelectRowAtIndexPath方法?

使用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

3
推荐指数
1
解决办法
6668
查看次数

iPhone隐藏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或类似的?

objective-c uisearchbar uisearchdisplaycontroller

3
推荐指数
1
解决办法
4524
查看次数

NSComparisonResult搜索字符串的一部分?

我在我的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)

如果我搜索一个字符串,它只会找到以该字符串开头的结果.

记录是" 我的艺术画廊 "

  • 搜索"我的艺术画廊"<---找到

  • 搜索"我的"<---找到

  • 搜索"艺术"<---未找到

  • 搜索"图库"<---未找到

如何更改我的代码,以便我可以找到上面显示的部分字符串?

iphone objective-c uisearchdisplaycontroller ios

3
推荐指数
2
解决办法
5605
查看次数

在iPhone应用程序开发中自定义搜索栏

在我的应用程序中,我必须在tableview的头部添加一个搜索栏.我能够添加搜索栏但问题是没有添加ios的默认搜索栏我可以添加自定义搜索栏吗?我正在给出一张图片,看看会有哪些类型的搜索栏...

在此输入图像描述

iphone uisearchbar uisearchdisplaycontroller uisearchbardelegate ios

3
推荐指数
1
解决办法
1万
查看次数

按下取消按钮后如何保持范围栏?

我有一个UITableView,顶部有一个搜索栏.我使用UISearchDisplayController来实现相同的功能.它还有一个带两个按钮的示波器栏.默认情况下,当我启动应用程序时,将显示范围栏.当我在搜索后单击取消按钮时,示波器条消失了.因此,即使在我按下"取消"按钮后,还有任何方法可以保留范围栏.我使用了以下代码,但它不起作用.

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar
{
    [searchBar setShowsScopeBar:YES];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

iphone cancel-button uitableview uisearchbar uisearchdisplaycontroller

3
推荐指数
1
解决办法
3334
查看次数

如何改进NSFetchedResultsController performFetch:性能?

我在数据库中只有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)

uisearchdisplaycontroller nsfetchedresultscontroller ios

3
推荐指数
1
解决办法
1645
查看次数

为什么我的UISearchBar的框架被UISearchDisplayController更改

我在我的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

3
推荐指数
2
解决办法
6737
查看次数

阻止UISearchDisplayController隐藏导航栏

我有一个实现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上找到其他问题,但没有帮助我.

最好的祝福

uisegmentedcontrol uisearchbar uisearchdisplaycontroller

3
推荐指数
1
解决办法
2121
查看次数

无法在UISearchResultsTableView中滚动到底部

我面临一个非常奇怪的问题,我无法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)

uitableview uisearchbar uisearchdisplaycontroller ios

3
推荐指数
1
解决办法
669
查看次数