2012-01-24 4 views
0

Я работаю над приложением iPhone/iPad и пытаюсь переключать виды через вызов функции, а не кнопкой. Я видел множество источников переключения просмотров, запускаемых кнопкой, но нет ничего, что объясняло бы, как переключать представления, запускаемые функцией. Я попытался сделать это сам, но это не удалось. Вот код, который я пробовал:Переключение Просмотр через функцию

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    if (self.webview == nil) { 
     self.webview = [[MainViewController alloc] init]; 
     /* webview initialized with storyboard */ 
     if (self.view.superview == nil) { 
      [self.view insertSubview:self.webview.view atIndex:0]; 
     } 
     [storyboard release]; 
    } 
} 

Это viewDidLoad viewController.m. Во-первых, он показывает WebView.

- (void)changeView { 
    self.normview = [[AlternateViewController alloc] init]; 
    /* normview initialized with storyboard */ 

    [UIView beginAnimations:@"View Flip" context:nil]; 
    [UIView setAnimationDuration:0.75]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 

    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES]; 
    [self.webview viewWillDisappear:YES]; 
    [self.webview viewDidDisappear:YES]; 
    [self.webview.view removeFromSuperview]; 
    [self.view insertSubview:self.normview.view atIndex:0]; 
    [self.normview viewWillAppear:YES]; 
    [self.normview viewDidAppear:YES]; 

    [UIView commitAnimations]; 
} 

И когда эта функция changeView (в viewController.m) называется, он должен изменить вид с WebView на normview (на самом деле, он отлично работает, когда тот же код запускается с помощью кнопки). Но когда я вызываю эту функцию в другом файле (not viewController.m), например

ViewController *viewcontroller = [[ViewController alloc] init]; 
[viewcontroller changeView]; 

Это не работает. Любой может дать ключ к решению этого или альтернативного пути? (П.с. я тестирую на IPad.).

ответ

0

Вы можете переключать с помощью этой функции:

YourView *screen = [[YourView alloc] initWithNibName:nil bundle:nil]; 
    screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:screen animated:YES]; 
    [screen release]; 

Вы можете установить modaltransitionstyle вашего Уиллингс.

Не забудьте импортировать свой заголовочный файл в верхней части вашего класса.

#import "YourView.h" 
+0

Спасибо за замечание, но, конечно, я уже знал это. Однако я не мог использовать его, потому что то, что я действительно хотел сделать, это представить imagepicker на веб-просмотре (как вы объяснили, но imagepicker вместо экрана), но если он вызван внешней функцией (а не кнопкой), это не так, т работы. Вот почему я попытался переключить представления, где normalview представляет imagepicker при срабатывании viewDidAppear. Если я могу сделать presentModalViewController: анимированный, чтобы работать, когда он вызывается другим файлом (not view controller.m), мне даже не нужно переключать представление. Можете ли вы дать мне решение? –

Смежные вопросы