2012-06-15 3 views
1

Отказ от ответственности: Я - что-то вроде iOS n00b. У меня есть навигационное приложение на основе - то есть, в моем AppDelegate, я создать навигационную рамку:Создание UISearchBar и UITableView внутри UIView

self.navigation_controller = [[UINavigationController alloc] initWithRootViewController:home_view_controller]; 
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds]; 
self.window.rootViewController = navigation_controller; 
self.window.makeKeyAndVisible; 

Внутри рамки моего дома зрения, я хочу панель поиска, затем прокручивать вид таблицы. Итак, я написал следующее:

- viewDidLoad{ 
    (HomeView*)home_view = [[HomeView alloc] init]; 
    self.view = home_view 
    self.view.backgroundColor = [UIColor whiteColor] 

    (UITableView*)self.table_view = [UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain]; 
    self.table_view.bounds.origin.y += 44; 
    self.table_view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    self.table_view.dataSource = self; 
    self.table_view.delegate = self; 
    [self.view addSubview:self.table_view]; 

    search_frame = self.view.bounds; 
    search_frame.origin.y = 48.0; 
    search_frame.size.height = 48.0; 

    self.search_bar = [[UISearchBar alloc] initWithFrame:search_frame)]; 
    [self.view addSubview:self.search_bar]; 
} 

Вид таблицы отображается хорошо, но занимает все пространство под панелью навигации. Я хочу иметь панель навигации, а затем сразу под ней панель поиска, а затем табличный вид. В точке viewDidLoadUITableView еще не имеет ненулевого ограничивающего прямоугольника, и я ожидаю, что это часть проблемы. Кроме того, я указал UIViewAutoresizingFlexibleHeight в своем autoresizingMask, когда я действительно хочу, чтобы он склеивался с панелью поиска - опять же, я считаю, что это может быть частью проблемы.

Что я неправильно понял здесь?

Благодаря

ответ

1

Steve,

Попробуйте следующие изменения

CGRect targetRect = CGRectMake(0, 48, self.view.frame.size.width, self.view.frame.size.heigth); 
(UITableView*)self.table_view = [UITableView alloc] initWithFrame:targetRect style:UITableViewStylePlain]; 

2) Добавить следующую авторазмер маску также: кадр

// This value will anchor your table view with top margin 
UIViewAutoresizingFlexibleBottomMargin 

3) Установите SearchBar на следующий прямоугольника кадра:

CGRecttMake(0, 0, self.view.frame.size.width, 48); 
+0

То, что я ликвидируется делать делает панель поиска тумблер запускаемого значок поиска в nav bar, который в любом случае немного сексуальнее :) Что я не получал, так это то, как работает autoresizemasks, AFAICT. Мое решение работает вокруг этого, не заботясь о том, что UITableView занимает всю область просмотра, оставленную UINavigationView. Поскольку панель поиска теперь охватывает верхнюю запись в таблице, я, вероятно, должен вставить таблицу так, чтобы она все еще была видна ... –

Смежные вопросы