Как изменить вид по нажатию кнопки в iPhone без контроллера навигации? - PullRequest
3 голосов
/ 09 июня 2011

Я хочу знать, как изменить вид при нажатии кнопки в iPhone без контроллера навигации?

Ответы [ 5 ]

4 голосов
/ 09 июня 2011

Если вы делаете это с UIViewController, вы, вероятно, сделали бы это следующим образом:

- (IBAction)change {
    UIViewController* viewController = [[UIViewController alloc] init];
    [self.view addSubView];
    // Save the UIViewController somewhere if necessary, otherwise release it
}

Не знаю, почему вы не хотите использовать UINavigationController. Если это панель навигации вверху, которую вы не хотите видеть, есть свойство, позволяющее скрыть эту панель. Не уверен насчет его имени, возможно, навигация BarHidden или что-то в этом роде. Вы можете посмотреть это в API.

3 голосов
/ 09 июня 2011

Есть много разных способов сделать это, и вам, возможно, следует предоставить больше информации о вашем приложении.

Общий способ сделать это с анимацией следующий:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];    
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];

[vc1 viewWillDisappear:YES];
[vc2 viewWillAppear:YES];
vc1.view.hidden = YES;
vc2.view.hidden = NO;
[vc1 viewDidDisappear:YES];
[vc2 viewDidAppear:YES];

[UIView commitAnimations];

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

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];    
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];

[vc1 viewWillDisappear:YES];
[vc2 viewWillAppear:YES];
[vc1 removeFromSuperview];
[masterController.view addSubview:vc2.view;
[vc1 viewDidDisappear:YES];
[vc2 viewDidAppear:YES];

[UIView commitAnimations];
1 голос
/ 09 июня 2011

Предположим, у вас есть два вида myView1 и myView2 и одна кнопка myUIB в памяти

myView1.tag = 1;
myView2.tag = 2;
myUIButton.tag = 1; //Current visible view is myView1

-(void) ButtonCLicked:(id) sender 
{
       UIButton* myButton = (UIButton*)sender;


       if(sender.tag == 1)
       {
           [myView1 removeFromSuperview];
           [self addSubview:myView2]
           myButton.tag = myView2.tag;
       }
       else 
      {
          [myView2 removeFromSuperview];
          [self addSubview:myView1]
           myButton.tag = myView1.tag;
      }
}
1 голос
/ 09 июня 2011

Поместите это в метод IBAction кнопки

[mCurrentView removeFromSuperview];
[self.view addSubView: mNewView];

0 голосов
/ 09 июня 2011

Вы можете поместить две переменные UIView в заголовочный файл и скрыть / показать одну из них, или вы можете создать другой слой поверх существующего представления следующим образом:

-(IBAction)changeView {

    UIView *view = [[UIView alloc] initWithNibName:@"letMeSeeThis" bundle:nil];
    [self.view addSubview:view];
}
...