Изменение viewController при нажатии кнопки - PullRequest
2 голосов
/ 28 апреля 2011

Я новичок в программировании iPhone. то, что я пытаюсь, у меня есть один экран с кнопкой. И я хочу изменить контроллер представления, а не только представление, когда я нажимаю эту кнопку (я знаю, как добавить подпредставление), потому что из этого второго контроллера представления я должен перейти к третьему представлению, которое невозможно, если я сначала добавлю подпредставление место. Кто-нибудь может помочь мне с этим? Это возможно? и если да, то как? Все виды и контроллер вида создаются программно. Я не пользуюсь IB.

РЕДАКТИРОВАТЬ: вот соответствующий код, который срабатывает при нажатии кнопки

-(id)showCurrentLoc:(id)sender { 
 locationController = [currentLocController alloc]; 
 [entry removeFromSuperview]; 
 [newLoc removeFromSuperview]; 
 [currentLoc removeFromSuperview]; 
 [self.view setBackgroundColor:[UIColor clearColor]]; //[self.view addSubview: [locationController view]]; 
 [self.navigationController pushViewController:locationController animated:YES];  [locationController release]; 
 return 0; 
} //Location Controller is the tableViewController

Спасибо Vik

Ответы [ 5 ]

4 голосов
/ 28 апреля 2011

Вы можете сделать что-то вроде этого

        YourViewController *objYourViewController = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
        [self.navigationController pushViewController:objYourViewController animated:YES];
        [YourViewController release];
3 голосов
/ 28 апреля 2011

Обычно вы используете навигационный контроллер для такого рода вещей, чтобы пользователь мог легко вернуться к предыдущему представлению. Ваш контроллер представления будет делать что-то вроде этого:

[self.navigationController pushViewController:someNewViewController animated:YES];

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

2 голосов
/ 28 апреля 2011

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

0 голосов
/ 28 апреля 2011
- (void) loadViewAtIndex:(NSInteger)index {

    [self unloadViewAtIndex:activeViewIndex];

    switch (index) {

        case 1:
        {
            if (viewController1 == nil)
            {
                viewController1 = [[ViewController1 alloc] initWithNibName:@"ViewController1" bundle:nil];
            }

            viewController1.view.frame = CGRectMake(0.0, 0.0, viewController1.view.frame.size.width, viewController1.view.frame.size.height);

            [window addSubview:viewController1.view];
        }
            break;

        case 2:
        {
            if (viewController2 == nil)
            {
                viewController2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
            }

            viewController2.view.frame = CGRectMake(0.0, 0.0, viewController2.view.frame.size.width, viewController2.view.frame.size.height);

            [window addSubview:viewController2.view];
        }
            break;

        default:
            break;
    }

    activeViewIndex = index;
}

- (void) unloadViewAtIndex:(NSInteger)index {
    switch (index) {

        case 1:
        {
            if (viewController1 != nil)
            {
                [viewController1.view removeFromSuperview];
                [viewController1 release];
                viewController1 = nil;
            }
        }
            break;

        case 2:
        {
            if (viewController2 != nil)
            {
                [viewController2.view removeFromSuperview];
                [viewController2 release];
                viewController2 = nil;
            }
        }
            break;

        default:
            break;
    }
}
0 голосов
/ 28 апреля 2011

Вы можете работать с UINavigationController.Добавляя ваш первый UIViewController, как это в методе init:

        [self setViewControllers:[NSArray arrayWithObject:viewController]];

А затем, когда нажимается кнопка или делается выбор, вы нажимаете второй контроллер с (в первом viewController):

[self.navigationController pushViewController:controller animated:YES]; 

Таким образом, вы также получите автоматический (кнопка назад).По сути, вы создаете стек UIViewControllers, который вы можете вставлять и извлекать, как обычным стеком.

Надеюсь, это поможет.Просмотрите следующее: Справочник по классам UINavigationController

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