TTViewController и метод popupViewController

Я использую TTLauncherView и для этого объявляю контроллер представления как TTViewController, как в учебном приложении TTCatalog. Объявите переменную TTLauncherView внутри этого представления, добавьте элементы и т. Д.

В главном представлении моего приложения есть кнопка, вызывающая предыдущее представление со следующим кодом:

-(void) switchToButtonOrderingView
{
    ButtonOrderingViewController *ButtonOrderingView=
    [[ButtonOrderingViewController alloc] initWithNibName:@"ButtonOrderingViewController" bundle:nil]; 
    self.ButtonOrderingViewController = ButtonOrderingView; 
    [self.view insertSubview:ButtonOrderingView.view atIndex:10];
}

Когда я нажимаю кнопку, приложение останавливается на этом методе, принадлежащем TTViewController.m:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
  UIViewController* popup = [self popupViewController]; //brakes up here
  if (popup) {
    return [popup shouldAutorotateToInterfaceOrientation:interfaceOrientation];
  } else {
    return [super shouldAutorotateToInterfaceOrientation:interfaceOrientation];
  }
}

и ошибка выглядит так:

[ButtonOrderingViewController popupViewController]: нераспознанный селектор отправлен в экземпляр

Проверено, чтобы увидеть иерархию классов Three20, а TTViewController является подклассом UIViewController.

popupViewController - это метод TTPopViewController (и его подклассы)! Который я не использую и не использую учебное приложение TTCatalog. Я потерялся. Любая помощь будет оценена по достоинству.

Спасибо.


person BigJoke    schedule 26.01.2010    source источник
comment
Хотел бы получить на это ответ. Столкнулся с той же проблемой.   -  person lostInTransit    schedule 10.02.2010


Ответы (1)


Была такая же проблема и обнаружена ошибка!

Вот что происходит, когда вы забываете добавить -ObjC и / или -all_load к другим флагам компоновщика в соответствии с инструкциями по установке Three20. Возможно, вы добавили их на уровень проекта, а на более низком уровне установили приоритетную настройку - так было со мной.

person eliego    schedule 24.02.2010
comment
Обратите внимание, что это довольно распространенная проблема, когда вы используете стороннюю статическую библиотеку, написанную на Objective-C. Вы можете получить дополнительную информацию о том, что делают эти флаги, перейдя на developer.apple. .com / mac / library / qa / qa2006 / qa1490.html. Процитируем: флаг -ObjC заставляет компоновщик загружать каждый объектный файл в библиотеке, который определяет класс или категорию Objective-C. [...] Флаг -all_load заставляет компоновщик загружать все объектные файлы из каждого архива, который он видит, даже если он не содержит кода Objective-C. - person Clint Harris; 24.07.2010