3

私のアプリケーションでは、テーブルビューの先頭に検索バーを追加する必要があります。検索バーを追加することはできますが、ios のデフォルトの検索バーを追加しないと、カスタマイズした検索バーを追加できますか?? そこにある検索バーの種類を確認するための画像を提供しています...

ここに画像の説明を入力

4

5 に答える 5

9

メソッドをサブクラス化し、メソッド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;
        }
    }
}
于 2011-12-28T11:08:02.737 に答える
3

UISearchBarのApple DOC を探します

ここに画像の説明を入力

必要なものを取得するためのメソッドがたくさんあります

検索バー内で UITextView を取得できます

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

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

再び UITextField のAppleDocを探します。そのためのメソッドもたくさんあります。

于 2013-01-09T09:27:27.203 に答える
0
[[searchBarDesign.subviews objectAtIndex:0] removeFromSuperview];

ここで searchBarDesign は私の searchBar 名です。

于 2012-11-20T07:06:58.473 に答える
0

ええ、間違いなく。カスタム検索バー (のサブクラスUIView) を作成し、サブビューとして に追加できtableHeaderViewます。

于 2011-12-28T11:08:03.073 に答える
0

ロード時に 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
于 2013-08-24T01:37:41.877 に答える