Использование IBAction для возврата к контроллеру основного вида - PullRequest
0 голосов
/ 05 апреля 2011

У меня есть приложение, которое имеет несколько представлений, к которым осуществляется переход с помощью нескольких пользовательских кнопок UIB из моего основного представления.Основное представление называется iBMRViewController и содержит некоторые полезные графические изображения в виде изображений PNG, добавленных через конструктор интерфейса.Он также имеет 6 пользовательских UIB-кнопок, которые я создал с помощью кода с использованием следующего:

// This is the code which creates, and defines the properties of the 'Warning' button on the main view.
    UIButton *warningButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
    warningButton.frame = CGRectMake(225.0, 270.0, 60.0, 60.0);
    [warningButton setTitle:@"" forState:UIControlStateNormal];
    warningButton.backgroundColor = [UIColor clearColor];
    [warningButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal ];
    UIImage *warningButtonImageNormal = [UIImage imageNamed:@"Warning.png"];
    UIImage *warningStretchableButtonImageNormal = [warningButtonImageNormal stretchableImageWithLeftCapWidth:12 topCapHeight:0];
    [warningButton setBackgroundImage:warningStretchableButtonImageNormal forState:UIControlStateNormal];
    UIImage *warningButtonImagePressed = [UIImage imageNamed:@"whiteButton.png"];
    UIImage *warningStretchableButtonImagePressed = [warningButtonImagePressed stretchableImageWithLeftCapWidth:12 topCapHeight:0];
    [warningButton setBackgroundImage:warningStretchableButtonImagePressed forState:UIControlStateHighlighted];
    [warningButton addTarget:self action:@selector(warningButtonAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:warningButton];

Теперь все это работает отлично, и кнопки работают отлично, очевидно, для них также настроены Действия, которые работают отлично.На каждой странице у меня есть UINavigationBar с UINavigationItem, настроенный через конструктор интерфейса и настроенный для возврата меня к моему основному виду с помощью следующего кода:

//This is the code which opens up the new view when 'Begin' button is tapped.
-(IBAction)beginHomeButtonAction:(id)sender {
    iBMRViewController *controller = [[BeginView alloc] initWithNibName:@"iBMRViewController" bundle:nil];
    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:controller animated:YES];
    [controller release];

Это также работает, однако, когда мне требуетсяВозвращаясь к «iBMRViewController», он ТОЛЬКО отображает то, что было настроено с помощью xib-файла компоновщика интерфейса (то есть приветственных png-файлов).Он не отображает кнопки, которые я добавил через код.

Может кто-нибудь дать мне представление о том, где я ошибся?Был бы очень признателен.

Спасибо

1 Ответ

0 голосов
/ 05 апреля 2011

На самом деле, beginHomeButtonAction не «возвращает вас к главному виду». Он создает новый контроллер представления с новым представлением и представляет это. Это тот же вид класса контроллера, но не тот же экземпляр этого класса.

Чтобы закрыть представление и фактически вернуть пользователя к основному виду, вы должны отклонить представление, представленное вами, из основного представления. Как это сделать, зависит от того, как вы тогда выступили, но вы можете попробовать popViewControllerAnimated или dismissModalViewControllerAnimated. (гугл твой друг)

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