Использование presentModalViewController для загрузки представления

StackOverflow https://stackoverflow.com/questions/1814126

  •  06-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь загрузить временное скользящее представление из другого контроллера представления. Контроллеры представления моего приложения структурированы:

Application > Tab Bar Controller > TabBarItem > View Controller

В этом контроллере представления у меня есть кнопка, которая успешно запускает метод для загрузки временного представления:

- (IBAction)displayTimePickerViewForDayButton:(id)sender {

    NSLog(@"displayTimePickerViewForDayButton method entered.");

    // create the selector view controller and become the delegate
    WOTimePickerViewController *tpvc = [[WOTimePickerViewController alloc] initWithNibName:@"WOTimePickerView" bundle:nil];
    tpvc.delegate = self;
    tpvc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [self presentModalViewController:tpvc animated:YES];
    [tpvc release];
}

Я убедился, что мой WOTimePickerViewController успешно возвращается из метода init, но представление никогда не входит в свой метод viewDidLoad.

Итак, если я посмотрю на представление в IB, оно, похоже, связано с "представлением" виртуального канала ". имущество. Когда я запускаю представление в симуляторе (из IB), оно отображается правильно.

Когда я запускаю приложение из XCODE, я могу перейти к представлению, нажать мою кнопку, и появляется пустой белый экран (обратите внимание, что это не белый фон представления, который должен загружаться).

Это было полезно?

Решение

Вы должны сделать это так ..

WOTimePickerViewController *tpvc = [[WOTimePickerViewController alloc] initWithNibName:@"WOTimePickerView" bundle:nil];
    tpvc.delegate = self;
UINavigationController *navCntrlr = [[UINavigationController alloc] initWithRootViewController:tpvc];
    navCntrlr.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [self.navigationController presentModalViewController:tpvc animated:YES];
    [tpvc release];

Но важная вещь, которую вам не хватает, это то, что вы делаете это неправильно.

вы должны сделать это следующим образом:

[self.navigationController presentModalViewController:tpvc animated:YES];

и когда вы хотите закрыть контроллер modalView, вы должны сделать это следующим образом:

[self.navigationController dismissModalViewControllerAnimated:YES];

Другие советы

Я думаю, что modalTransitionStyle контроллера представления применяется к модальным представлениям, показанным из этого контроллера представления. Поэтому, если вы хотите использовать переход UIModalTransitionStyleCoverVertical для отображения вашего модального контроллера, вы должны установить свойство modalTransitionStyle в родительском контроллере представления (self), а не в новом.

У меня нет опыта использования modalTransitionStyle, но, возможно, установка этого свойства перед загрузкой представления вызывает некоторые проблемы? Я бы попробовал это закомментировать ...

Похоже, что все настроено правильно в IB. Пока владелец вашего файла является контроллером представления, а его выход привязан к представлению, вы должны быть хорошими.

Надеюсь, это поможет,

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top