TableView заблокирован Titlebar - PullRequest
0 голосов
/ 13 июня 2011

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

Я столкнулся с проблемой в тот момент, когда пользователь выбирает категориюиз первого табличного представления, как показано на скриншоте: http://www.cl.ly/7YOF

Когда другой экземпляр tableviewcontroller загружается и помещается в стек навигационного контроллера, таблица закрывается строкой заголовка: http://www.cl.ly/7ZRz

Логика выбора табличного представления приведена ниже:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    KHCategory *selectedItem = [categoryArray objectAtIndex:indexPath.row];
    if (selectedItem.categories.count > 0) {
        KHCategoryTableViewController *nextCategoryController = [[KHCategoryTableViewController alloc] init];
        nextCategoryController.categoryArray = [[NSArray alloc] initWithArray:selectedItem.categories];
        nextCategoryController.title = selectedItem.labelValue;

        [self.navigationController pushViewController:nextCategoryController animated:YES];
        [nextCategoryController release];
    } else {
        NSLog(@"show detail view");
    }
}

РЕДАКТИРОВАТЬ: мне должно быть ясно, что экземпляр KHCategoryTableViewController является корнем моего NavigationController, а NavController подключен к первой вкладкеTabController.

Ответы [ 3 ]

4 голосов
/ 15 июня 2011

Две интересные вещи: он измеряет 20 пикселей вниз (размер строки состояния) и ваша строка "nextCategoryController.title = ...", похоже, ничего не делает.Итак ...

1) Я предполагаю, что вы не использовали setStatusBarHidden?

2) Похоже, что материал navController не работает.Можете ли вы дать код из appDelegate, который создает tabBar и NavController?

3) Добавьте этот код и попробуйте вызвать [self dumpWindow: @"VDL"] из вашего метода подкатегории ViewDidLoad.Я считаю это бесценным всякий раз, когда проверяю правильность структуры моего представления.

- (void) dumpWindowFrom:(NSString *) fromText {
    [self dumpViews: nil from:fromText];
}

void dumpViewsRecursive(UIView* view, NSString *text, NSString *indent) {
    Class cl = [view class];
    NSString *classDescription = [cl description];

    if ([text compare:@""] == NSOrderedSame)
    NSLog(@"%d: %@ %@ %@", (int)view, classDescription, NSStringFromCGRect(view.frame), view.hidden ? @"Inv" : @"Vis");
else
    NSLog(@"%d: %@ %@ %@ %@", (int)view, text, classDescription, NSStringFromCGRect(view.frame), view.hidden ? @"Inv" : @"Vis");

    for (NSUInteger i = 0; i < [view.subviews count]; i++)
    {
        UIView *subView = [view.subviews objectAtIndex:i];
        NSString *newIndent = [[NSString alloc] initWithFormat:@"  %@", indent];
        NSString *msg = [[NSString alloc] initWithFormat:@"%@%d:", newIndent, i];
        dumpViewsRecursive (subView, msg, newIndent);
        [msg release];
        [newIndent release];
    }
}    

- (void) dumpViews: (UIView *) view {
    dumpViewsRecursive  (( (!view) ? [[UIApplication sharedApplication] keyWindow] : view), @"" ,@"");
}

- (void) dumpViews: (UIView *) view from:(NSString *) fromText{
    dumpViewsRecursive ((!view) ? [[UIApplication sharedApplication] keyWindow] : view, fromText, @"");
}

4) Вы всегда можете просто обмануть и добавить:

CGRect frame = [nextCategoryController.view frame];
frame.origin.y = frame.origin.y+20.0;
[nextCategoryController.view setFrame:frame];
0 голосов
/ 15 июня 2011

Эта проблема стала решаться при сборке под iOS 4.3, а не под iOS 5.

0 голосов
/ 13 июня 2011

Проверьте autoResizingMask вашего представления KHCategoryTableViewController.

Обзор UINavigationController в iPhone Dev Center говорит:

Примечание: потому что количество места Доступно для пользовательского просмотра может варьироваться (в зависимости от размера другого навигационные виды), ваши собственные виды свойство autoresizingMask должно быть установить гибкую ширину и рост. Перед отображением вашего вида, навигационный контроллер автоматически позиционирует и измеряет его чтобы соответствовать доступному пространству.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...