UITableView: Рисование-Поведение верхнего и нижнего колонтитула - PullRequest
0 голосов
/ 16 октября 2011

Почему верхний и нижний колонтитулы табличного представления всегда остаются в верхней части иерархии представления, а не в ячейках таблицы?

Вот что я получил:

  • Представление таблицы с пользовательскими ячейками, нижним колонтитулом и заголовком
  • Панель навигации с кнопкой меню справа
  • Когда пользователь нажимает кнопку меню, полупрозрачное меню (UIView) исчезает сверху, но не над панелью навигации, а только над видом моего tableviewcontroller
  • Когда пользователь нажимает кнопку меню, меню возвращается к (0, -menuHeight)
  • Но когда меню находится над заголовком, этот регион меню находится за моим заголовком

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

Кто-нибудь знает, как решить эту проблему? Почему клетки окрашены правильно?

Ответы [ 2 ]

1 голос
/ 16 октября 2011

Вероятно, вам не следует напрямую вмешиваться во внутреннюю иерархию представлений UITableView. Apple может свободно заказать подпредставления представления таблицы по своему усмотрению (и изменить его в будущих выпусках).

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

0 голосов
/ 17 октября 2011

Я изменил свой дизайн, но теперь у меня нет сенсорных событий в моей таблице.

Но когда я добавляю этот метод - я вижу, что касаюсь контроллера viewview ...

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"ShieldingViewController received touch");
    [self.buttonMenu shieldingViewTouched];
}

Вот что я изменил:

- (void)viewDidLoad
{
    [super viewDidLoad];

    CGRect viewFrame = self.view.frame;
    viewFrame.origin.y = 0;

    UIView *rootView = [[UIView alloc] initWithFrame:viewFrame];
    rootView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;


    // Setup the table view
    UITableView *newTableView = [[UITableView alloc] initWithFrame:viewFrame style:self.tableView.style];
    newTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    newTableView.backgroundColor = [UIColor darkGrayColor];


    UIView *menuLayerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)];


    self.tableView = newTableView;

    [rootView addSubview:self.tableView];
    [rootView addSubview: menuLayerView];
    self.view = rootView;

    [[CustomNavigationController instance] setCurrentViewForMenu: menuLayerView];
    [[CustomNavigationController instance] showMenuInNavigationBarForController:self];

    [newTableView release];
    [menuLayerView release];
    [rootView release];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...