IOS Switch view и раскадровка не работает - PullRequest
2 голосов
/ 29 ноября 2011

У меня проблема с переключением просмотров.Я использую симулятор с xcode 4.2

Раскадровка содержит:

  • NavigationController (контроллер начального вида)
  • UIViewController, который связан с контроллером навигации
  • UIViewController (в паре с моим пользовательским классом: ViewEntryImageController), который не имеет никаких отношений.Содержит кнопку, нижнюю панель инструментов с кнопкой панели инструментов.

Пользователь входит в UIViewController, где он может видеть ScrollView и ScrollView некоторые изображения.

Изображения имеют жест:

    UITapGestureRecognizer *recognizer=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(openEntryImage)];
    [image addGestureRecognizer:recognizer];
    [recognizer release];

Функция openEntryImage:

(IBAction)openEntryImage
{
    ViewEntryImageController *controller=[[ViewEntryImageController alloc]initWithNibName:nil bundle:nil];
    controller.modalTransitionStyle=UIModalTransitionStyleCrossDissolve;
    [self presentModalViewController:controller animated:YES];
    [controller release];
}

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

Я пытаюсь вставить строку NSLog в ViewEntryImageController viewDidLoad функция, и она работает, так что такое черное окно и где находится мой контроллер вида?

Когда я пытаюсь использовать pushViewController, в новом представлении я нашел панель инструментов навигации с кнопкой "Назад", нодругих элементов управления нет.

Я пробовал другую версию, я создал класс UIViewController, но теперь с файлом xib .Я использовал его вместо ViewEntryImageController, и он работает.Зачем?Я тоже хочу использовать этот контроллер в раскадровке.

Ответы [ 2 ]

4 голосов
/ 29 ноября 2011

Класс ViewEntryImageController сам по себе не имеет информации о том, как построить диалог.Но вы можете создать экземпляр контроллера представления самостоятельно из раскадровки:

UIStoryboard *myStoryboard = [UIStoryboard storyboardWithName:@"StoryboardFileName" bundle:nil];
ViewEntryImageController *controller = (ViewEntryImageController *)[myStoryboard instantiateViewControllerWithIdentifier:@"ViewEntryImage"];

Это предполагает, что имя раскадровки StoryboardFileName, и что контроллер изображения записи представления имеет идентификатор ViewEntryImage, установленный в представлениисвойства (инспектор атрибутов, раздел «View Controller»).

1 голос
/ 29 ноября 2011

Попробуй так:

ViewEntryImageController *controller=[[ViewEntryImageController alloc]initWithNibName:@"ViewEntryImageController" bundle:nil];

Если вы не используете имена .nib, а предпочитаете раскадровки, это немного сложнее. Создайте переход от контроллера к контроллеру ViewEntryImageController, удерживая Ctrl и перетаскивая его из одного представления в другое. Нажмите на этот переход и дайте ему идентификатор.

Затем используйте функцию [self performSegue:@"identifier"];, чтобы представить следующий вид.

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