3

私の分割ビュー アプリケーションでは、検索バーを分割ビューの rootView に追加することはできません。

だから私は次のようにUIテーブルビューのtableHeaderViewで検索バーを動的に追加しました

searchBar = [[UISearchBar alloc] init];
      searchBar.frame=CGRectMake(0, self.tableView.frame.origin.y, self.tableView.frame.size.width, 44);
      [searchBar sizeToFit];
      self.tableView.tableHeaderView = searchBar;

ここに画像の説明を入力

下にスクロールする場合:iThe tableHeaderViewも下にスクロールするため、検索バーもスクロールします

ここに画像の説明を入力

上にスクロールする場合:tableHeaderViewも上にスクロールするため、検索バーもスクロールします

ここに画像の説明を入力

この問題を解決するために次のようにコードを実装しまし this helps only when scrolls downたが、テーブル ビューを上にスクロールすると、再びテーブル ビューとともに移動します。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
      CGRect rect = self.tableView.tableHeaderView.frame;
      rect.origin.y = MIN(0, self.tableView.contentOffset.y);
      self.tableView.tableHeaderView.frame = rect;
}

ビューの上部に常にtableHeaderView/検索バーを貼り付ける必要があります

これを行う方法

4

3 に答える 3

0

tableView とは別に tabBar を追加できます

mySearchBar = [[UISearchBar alloc] init];
[mySearchBar setHidden:NO];
mySearchBar.placeholder = @"Search item here";
mySearchBar.tintColor = [UIColor darkGrayColor];
mySearchBar.frame = CGRectMake(0, 0, 320, 44);
mySearchBar.delegate = self;
[mySearchBar sizeToFit];
[mySearchBar setAutocapitalizationType:UITextAutocapitalizationTypeNone];

[self.view addSubview:mySearchBar];  

そしてtableView

UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 44, 320, 436)];
[self.view addSubview:tableView]; 

xib に追加する場合は、

ここに画像の説明を入力

于 2013-02-05T14:17:48.547 に答える
0

searchBar を別のビューに配置し、そのビューをテーブル ビューの上に配置します。つまり、一定に保たれます。

于 2013-02-05T13:49:40.700 に答える
-2

これは以前に回答されていると確信していますがUITableViewController、を使用していると仮定すると、viewプロパティを好きなものにすることができます。したがって、1 つのアプローチは、上部に検索バーがあり、その下にテーブルがあるコンテナー ビューを設定し、viewこのコンテナーにすることです。デフォルトでtableViewは が返さviewれるため、注意が必要なもう 1 つの詳細は、tableViewプロパティをオーバーライドして実際のテーブル ビュー (ivar に保存したもの) を返すことです。コードは次のようになります。

@synthesize tableView = _tableView;

- (void)loadView
{
    [super loadView];

    _tableView = [super tableView];

    // Container for both the table view and search bar
    UIView *container = [[UIView alloc] initWithFrame:self.tableView.frame];

    // Search bar
    UIView *searchBar = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 50)];

    // Reposition the table view below the search bar
    CGRect tableViewFrame = container.bounds;
    tableViewFrame.size.height = tableViewFrame.size.height - searchBar.frame.size.height;
    tableViewFrame.origin.y = searchBar.frame.size.height + 1;
    self.tableView.frame = tableViewFrame;

    // Reorganize the view heirarchy
    [self.tableView.superview addSubview:container];
    [container addSubview:self.tableView];
    [container addSubview:searchBar];
    self.view = container;
}
于 2013-02-05T15:56:17.270 に答える