Как подтолкнуть суб-ViewControllers без NavigationController? - PullRequest
1 голос
/ 22 мая 2011

Я хочу перенести viewControllers в область моего основного viewController. Насколько я понимаю, вы не можете использовать NavigationController, если не добавляете его в окно UIWindow.

Эта анимация напоминает горизонтальную прокрутку UIScrollView. Но я хочу, чтобы он работал как NavigationController. ViewControllers будут изменены, когда пользователь нажимает на определенные действия.

ViewController2 будет табличным представлением с некоторыми другими кнопками.

ViewController3 будет формой для изменения объекта из tableView.

Анимация viewControllers http://i55.tinypic.com/3589ysn.png

Ответы [ 4 ]

7 голосов
/ 22 мая 2011

Недавно я нашел в UIView метод, который создает ощущение «толчка или выдавливания» для переключения видов.

+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion

Это прямо из документации UIView, поэтому я бы рекомендовал взглянуть на UIView Class Reference , чтобы увидеть подробности. По сути, он переключает представление на другое, а раздел options: позволяет выбирать из множества различных стилей.

2 голосов
/ 26 мая 2011

Я на самом деле решил эту проблему, поиграв с UIView Animations.

-(void)slideInView:(UIView*)newView toView:(UIView*)oldView {
    /* Sets the view outside the right edge and adds it to mainView */
    newView.bounds = mainView.bounds;
    newView.frame = CGRectMake(newView.frame.origin.x + 784, newView.frame.origin.y, newView.frame.size.width, newView.frame.size.height);
    [mainView addSubview:newView];

    /* Begin transition */
    [UIView beginAnimations:@"Slide Left" context:oldView];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDelay:0.0f];
    [UIView setAnimationDuration:0.5f];
    [UIView setAnimationDidStopSelector:@selector(slideInCompleted:finished:context:)];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    newView.frame = CGRectMake(0,0, newView.frame.size.width, newView.frame.size.height);
    oldView.frame = CGRectMake(oldView.frame.origin.x - 784, oldView.frame.origin.y, oldView.frame.size.width, oldView.frame.size.height);
    [UIView commitAnimations];
}

-(void)slideInCompleted:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
    UIView *view = (UIView*)context;
    [view removeFromSuperview];
}

и использовав его

menuController = [[MenuViewController alloc] init];
[self slideOutView:menuController.view toView:loginController.view];
[oldController release];

Помните, что вы выбрали UIViewController, который вам нужно выпустить, когда высделали это!В примере я закончил с loginController и выпустил его.

1 голос
/ 22 мая 2011

Абсолютно невозможно "толкнуть" изначально любой контроллер без UINavigationController.Вы можете, однако, анимировать взгляды внутри и снаружи.

С примером, который вы опубликовали, похоже, что простой UIScrollView будет вашим самым простым вариантом.

0 голосов
/ 23 мая 2011

Я бы использовал UIScrollView, так как он имеет возможность привязки к встроенным «страницам». Вы также можете прокрутить до любой части с помощью setContentOffset: animated: также.

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