iOS - добавление нового вида / переключение видов при нажатии кнопки - PullRequest
3 голосов
/ 04 августа 2011

У меня есть приложение с разделенным видом с кнопкой в ​​подробном представлении, которое, при нажатии на которую, переводит пользователя в полноэкранный режим выбранного изображения.

Я понимаю, что мне нужен новый nib-файл и контроллеры представления, но я не уверен, как связать эти новые файлы с моими существующими файлами RootViewController и DetailViewController.

Я знаю, что это действительно расплывчато, но любая помощь будет очень признательна.

1 Ответ

6 голосов
/ 04 августа 2011

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

  1. Создать новый контроллер представления со связанным файлом .xib.
  2. Объявитьконкретный экземпляр вашего нового контроллера представления, в данном случае называемый newViewController, в DetailViewController.h и синтезируйте его в DetailViewController.m

    @interface DetailedViewController
    {    
        NewViewController *newViewController;
    }
    @property (nonatomic, retain) NewViewController *newViewController;
    @end
    
  3. Добавьте IBAction в файл заголовка DetailViewController,это будет функция, ответственная за фактическое переключение вашего вида

  4. Реализация действия переключателя вида в файле DetailViewController.m, должна выглядеть примерно так:

    (IBAction)switchToNewView:(id)sender
    {
        if (newViewController == nil)
        {
            NewViewController *newViewController =
              [[NewViewController alloc] 
                initWithNibName:@"NewViewController"
                bundle:[NSBundle mainBundle]];
    
            self.newViewController = newViewController;
        }
    
        // How you reference your navigation controller will
        // probably be a little different
        [self.navigationController
           pushViewController:self.newViewController
           animated:YES];
    }
    
  5. Затем в вашем файле DetailViewController.m внутри функции viewDidLoad добавьте следующее:

    UIBarButtonItem *addButton =
      [[UIBarButtonItem alloc]
        initWithBarButtonSystemItem: UIBarButtonSystemItemAdd
        target:self action:@selector(switchToNewView:)];
    self.navigationItem.rightBarButtonItem = addButton;
    [addButton release];
    
  6. Другой вариант, который у вас есть, если вы решите реализовать эточерез UIButton, чтобы создать кнопку в Интерфейсном Разработчике на вашем NewViewController.xib, затем выберите ее, и яВ инспекторе соединений создайте ссылку между событием «touchUpInside» и владельцем файла, а затем выберите свой IBAction switchToNewView.Это должно сделать то же самое.

Это общая идея.Я надеюсь, что это поможет!

РЕДАКТИРОВАТЬ: Как было сказано в комментариях, если добавить кнопку в качестве UIBarButton как часть контроллера навигации, вам просто нужно сделать что-то вроде ниже:

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(switchToNewView:)];
self.navigationItem.rightBarButtonItem = addButton;
[addButton release];
...