Вопрос по ipad, xcode, iphone – Невозможно заставить presentViewController работать

35

Я скопировал рабочий класс viewcontroller из другого проекта в новый проект. Я не могу получить представление для загрузки в новом проекте. В старом проекте я использовал presentModalViewController. В новом я не могу получить представление для загрузки с использованием presentModalViewController или presentViewController

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

Вот как выглядит мой интерфейс контроллера основного вида ...

//  ViewController.h
#import <UIKit/UIKit.h>
#import "RequestDialogViewController.h"

@interface ViewController : UIViewController <RequestDialogViewControllerDelegate> {

}

- (void)requestDialogViewDidDismiss:(RequestDialogViewController *)controller withResponse:(NSString*)response;

Я использую presentModalViewController, как это ...

RequestDialogViewController *requestIPViewController = [[RequestDialogViewController alloc] initWithNibName:@"RequestDialogViewController"  bundle:nil];
navigationController = [[UINavigationController alloc] initWithRootViewController:requestIPViewController];
[self presentModalViewController:navigationController animated:YES];

и представить ViewController, как это ...

RequestDialogViewController *requestIPViewController = [[RequestDialogViewController alloc] initWithNibName:@"RequestDialogViewController"  bundle:nil];    
[self presentViewController:requestIPViewController animated:YES completion:nil];

Чего мне не хватает в новом проекте? Метод init срабатывает, но viewDidLoad - нет, и ничего не отображается.

Спасибо

Ваш Ответ

5   ответов
3

если вы хотите представить свой viewController в корневом представлении viewDidLoad, он потерпит неудачу. Как только ваш viewController готов к этому, вы можете представить новый viewController. Итак, вы можете сделать это в

- (void)viewDidLayoutSubviews {
    //present here
}
Error: User Rate Limit Exceeded
0

presentViewController называется послеdismissViewControllerAnimated для другого ViewController. Мое решение состоит в том, чтобы переместитьpresentViewController до завершения блокаdismissViewControllerAnimated.

Error: User Rate Limit Exceeded
4

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

[self presentViewController:requestIPViewController animated:YES completion:nil]; 

Спасибо тем, кто ответил.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededdeveloper.apple.com/library/ios/documentation/uikit/reference/…:
83

ViewController является корневым контроллером вида, он не может представлять модальный контроллер вида изнутри своего собственногоviewDidLoadпотому что в этот момент у него нет такой информации, как размер экрана.

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

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

Для большей надежности внедритьviewDidAppear: заViewController, Все еще используйте свою систему таймера, чтобы добавить дополнительную задержку; доли секунды должно быть достаточно. Хотя представление модального контроллера вид изнутриviewDidAppear работал для меня в симуляторе iOS 5.1,Представление модального контроллера представления при загрузке другого ViewController говорит, что иногда этого не происходит.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededstackoverflow.com/questions/14739461/…Error: User Rate Limit Exceeded
-1

Для удобства всех начинающих программистов, введите его вместо копирования вставки.

myVC *viewController = [[myVC alloc]initWithNibName:@"myVC" bundle:nil];
viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:viewController animated:YES];
[viewController release];

Похоже, что вы пытались представить контроллер nav как контроллер представления в первом примере, тогда вы использовали неправильный метод во втором.

Error: User Rate Limit Exceeded user278859
Error: User Rate Limit Exceeded

Похожие вопросы