当只有一个实例化时,两个UISearchBars显示在视图控制器中

时间:2013-02-11 16:51:18

标签: ios objective-c uisearchbar uisearchdisplaycontroller

我在视图控制器中有两个搜索栏。这很奇怪,因为我在另一个vc中有相同的确切代码,它工作正常。 (背景中的搜索栏不应该在那里)

这是截图:

enter image description here

我添加了代表:<UISearchBarDelegate, UISearchDisplayDelegate>

然后在.h:

@property (nonatomic,retain) IBOutlet UISearchBar *searchBar;
<。>中的

@synthesize searchBar;
viewDidLoad中的

 self.searchBar.frame = CGRectMake(204, 11, 107,44);
    self.searchBar.delegate = self;

    //customize the searchbar
    UITextField *searchField = [self.searchBar valueForKey:@"_searchField"];
    [searchField setBackground:[UIImage imageNamed:@"search_panel.png"]];

    [self.searchBar setTintColor:[UIColor redColor]];
    UIImage *searchimg = [UIImage imageNamed:@"searchfield_bg.png"];

    for (UIView *subview in self.searchBar.subviews) {
        if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
            UIView *bg = [[UIView alloc] initWithFrame:subview.frame];
            bg.backgroundColor = [UIColor colorWithPatternImage:searchimg];
            [self.searchBar insertSubview:bg aboveSubview:subview];
            [subview removeFromSuperview];
            break;
        }
    }

    [self.view addSubview:self.searchBar];

就是这样。我与Storyboard视图控制器xib中的searchBar无关,它在viewDidLoad方法中以编程方式添加

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

如果您使用的是插座,那么您的UISearchBar很可能也存在于故事板或xib中。由于您还在viewDidLoad中创建了它,因此您需要制作它的第二个副本。再看一下你的故事板。