使用搜索栏自定义UITableView

时间:2012-11-09 09:32:17

标签: objective-c ios uitableview uistoryboard

我有一个带有搜索栏的TableView。但是我想在TableView中添加另一个视图(比如一个标签)(所以它与tableview一起滚动)。例如,如果您打开iPhone手机通讯录应用程序,在所有号码下,您可以看到一个名为“我的号码:”的标签。它必须与搜索栏处于同一层级。我试图在搜索栏上方添加一个新标签,但故事板不允许我这样做。

Document Outline Screenshot for the ViewController

在这里,如果我将UILabel拖放到此层次结构中,它将替换顶部的搜索栏,或者标签将移至原型单元格内部。没有其他方法可以同时显示搜索栏和标签。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

在视图控制器视图外部创建一个单独的视图(或者在内部,无关紧要。您甚至可以以编程方式创建它)并将其链接到IBOutlet myCustomView。 创建一个IBOutlet searchBar并链接您的UISearchBar

在viewDidLoad中;您可以使用     [searchBar addSubView:myCustomView]; 并在搜索栏上方添加自定义视图。

您可以显示/隐藏(myCustomView.hidden = YES / NO)自定义视图,或者在需要时从superview添加和删除它。

离。

- (IBAction)didTapShowCustomHeaderButton {
    myCustomView.hidden = NO;
}

- (IBAction)didTapHideCustomHeaderButton {
    myCustomView.hidden = YES;
}

答案 1 :(得分:0)

在代码中添加以下两个代理

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
    {

     UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];
      label.text = @"My Label";
    label.backgroundColor = [UIColor clearColor];

      return label;   

     }   

-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section{
        return 30 // this height should be equivalent to the myLabel height u declared in headerView above
        }