Настройка панели поиска в разработке приложений для iPhone - PullRequest
3 голосов
/ 28 декабря 2011

В моем приложении я должен добавить строку поиска в начало таблицы.Я могу добавить панель поиска, но проблема не в том, чтобы добавить панель поиска по умолчанию для ios. Могу ли я добавить свою поисковую панель?Я даю изображение, чтобы увидеть, какие типы панели поиска будут там ...

enter image description here

Ответы [ 5 ]

9 голосов
/ 28 декабря 2011

вы можете создать подкласс UISearchBar и переопределить метод layoutSubviews:

- (void)layoutSubviews {
   UITextField *searchField;
   NSUInteger numViews = [self.subviews count];
   for(int i = 0; i < numViews; i++) {
      if([[self.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) { //conform?
        searchField = [self.subviews objectAtIndex:i];
      }
   }
   if(!(searchField == nil)) {
       searchField.textColor = [UIColor whiteColor];
       [searchField setBackground: [UIImage imageNamed:@"yourImage.png"] ];
       [searchField setBorderStyle:UITextBorderStyleNone];
   }

   [super layoutSubviews];
}

Также вы можете:

//to clear searchbar backgraound
- (void) clearSearchBarBg
{
    for (UIView *subview in theSearchBar.subviews) 
    {
        if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) 
        {
            [subview removeFromSuperview];
            break;
        }
    }
}

//display showSearchButtonInitially in a keyboard 
- (void)showSearchButtonInitially
{
    UIView * subview;
    NSArray * subviews = [theSearchBar subviews];

    for(subview in subviews)
    {
        if( [subview isKindOfClass:[UITextField class]] )
        {
            NSLog(@"setEnablesReturnKeyAutomatically");
            [((UITextField*)subview) setEnablesReturnKeyAutomatically:NO];
            ((UITextField*)subview).delegate=self;
            [((UITextField*)subview) setEnabled:TRUE];
            ((UITextField*)subview).borderStyle = UITextBorderStyleNone;
            break;
        }
    }
}
3 голосов
/ 09 января 2013

Ищите Apple DOC для UISearchBar

enter image description here

У вас есть куча способов получить все, что вы хотите

Вы можете получитьUITextView Внутри панели поиска по

UITextField *textField = [searchBar.subviews objectAtIndex:2];

if ([textField isKindOfClass:[UITextField class]]) {
    //Do your customization
}

Снова ищите AppleDoc для UITextField.У вас есть куча методов для этого.

0 голосов
/ 24 августа 2013

Я думаю, что лучше всего установить все свойства UISearchBar, когда он загружен.

@interface MySearchBar : UISearchBar

@end


@implementation MySearchBar

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self myInitialize];
    }
    return self;
}

-(void)awakeFromNib

{
    [super awakeFromNib];
    [self myInitialize];
}

-(void)myInitialize
{
    self.backgroundImage = [UIImage imageNamed:@"image.png"];

    for (UIView* subview in self.subviews) {
        if ([subview isKindOfClass:[UITextField class]]) {
            //customize text field
            UITextField* textfield = (UITextField*) subview;
        }
    }
}

@end
0 голосов
/ 20 ноября 2012
[[searchBarDesign.subviews objectAtIndex:0] removeFromSuperview];

здесь searchBarDesign - это мое имя searchBar.

0 голосов
/ 28 декабря 2011

Да, определенно.Вы можете создать свою собственную панель поиска (которая является подклассом UIView) и добавить ее в качестве подпредставления к tableHeaderView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...