UINavigationController показывает пустое представление - PullRequest
0 голосов
/ 06 марта 2011

Я делаю простое навигационное приложение, которое детализирует один уровень и каждый раз показывает новый xib-файл. Когда я углубляюсь в один уровень, мой экран становится пустым. У меня все еще есть навигационный контроллер наверху с кнопкой возврата, но мой вид не загружается.

Вот мой код

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    circle_area *subViewOneController = [[circle_area alloc] init];
    UIViewController *tvc = subViewOneController;
    if (indexPath.row == 0 && indexPath.section == 0) {
        [[self navigationController] pushViewController:tvc animated:YES];
    }
}

как я уже сказал, это возвращает пустой экран.

Мой обновленный код:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
circle_area *subViewOneController = [[circle_area alloc] init];
UIViewController *tvc = subViewOneController;
switch (indexPath.section) {
    case 0:
        switch (indexPath.row) {
            case 0:
                NSLog(@"section %i special button!", indexPath.section);
                NSLog(@"row %i special button!", indexPath.row);
                break;
            default:
                break;
        }
        break;
    default:
        break;
}
NSLog(@"section %i!", indexPath.section);
NSLog(@"row %i!", indexPath.row);
NSLog(tvc.view.recursiveDescription);
if (indexPath.row == 0 && indexPath.section == 0) {
    [[self navigationController] pushViewController:subViewOneController animated:YES];
}
[tvc release];
}

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

1 Ответ

2 голосов
/ 06 марта 2011
circle_area *subViewOneController = [[circle_area alloc] init];

В этой строке вы создаете экземпляр класса circle_area и присваиваете его указателю с именем subViewOneController.

UIViewController *tvc = subViewOneController;

В этой строке вы назначаете этот же экземпляр указателю с именем tvc. Этот указатель определен для указания на экземпляр класса UIViewController.

Не ясно, что вы пытаетесь сделать здесь. Что такое circle_area? Почему избыточное назначение? Является ли circle_area подклассом UIViewController? Если это не так, то это проблема, и вы должны были предупредить об этом компилятор.

Кроме того, у вас есть утечка памяти. Вы выделяете память для этого circle_area экземпляра, но не освобождаете ее.

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