push-контроллер представления с аргументами с использованием ios5 и раскадровки

Я разрабатываю приложение для iPad, используя sdk 5 и раскадровку из уже работающего приложения для iPhone (разработанного с помощью отдельных xibs). Я понимаю, как работает раскадровка, но я хотел бы использовать контроллер представления с аргументами. Кнопка вызывает действие logIn2, например:

   - (IBAction)logIn2: (NSString *)strUser: (NSString *)strPass
{
    userViewController *UserViewController = [[userViewController alloc] initWithNibName:@"userViewController" bundle:nil stringOne:strUser stringTwo:strPass];
    //UserViewController.hidesBottomBarWhenPushed = YES;
    [[self navController] pushViewController:UserViewController animated:YES];
}

это работало правильно, но с sdk 5 возвращает ошибку в первой строке. Как протолкнуть представление с аргументами? Спасибо.


person Jaume    schedule 26.12.2011    source источник
comment
ошибка: тип получателя 'userViewController', например, сообщение не объявляет метод с селектором 'initWithNibName:bundle:stringOne:stringTwo:' [4]   -  person Jaume    schedule 26.12.2011


Ответы (3)


Если вы говорите, что хотите преобразовать свое приложение для использования Storyboard и Segues, вы должны сделать Segue для отправки UserViewController. Поместите некоторые свойства в UserViewController для хранения аргументов. Затем переопределите prepareForSegue и задайте в нем свойства. Смотрите этот ответ для более подробной информации:

Правильный доступ к контроллеру представления назначения перехода для назначения делегатов протокола

person agilityvision    schedule 26.12.2011

Из сообщения об ошибке довольно очевидно, что в вашем UserViewController нет метода, объявляющего initWithNibName:bundle:stringOne:stringTwo:'. Как выглядит ваш UserViewController?

person Ken W    schedule 26.12.2011
comment
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil stringOne:(NSString *)aStringOne stringTwo:(NSString *)aStringTwo { - person Jaume; 26.12.2011

Вы объявили пользовательский инициализатор в своем файле .h? В противном случае в качестве селектора будет найден только стандартный инициализатор initWithNibName, а не назначенный вами - отсюда и сообщение об ошибке.

person Earl    schedule 26.12.2011
comment
Объявления в заголовке недостаточно; нужно также реализовать его в .m. - person Peter Hosey; 26.12.2011