Вызов из класса

Я думаю, что у меня есть простая проблема с моим приложением. Прежде всего, я использую PraseSDK, чтобы использовать LoginView, который они предлагают.

Теперь я собирался создать эту функцию и позволить ей вызвать контроллер вида в

- (void) viewDidLoad

Он отлично работал.

Теперь мне было интересно, могу ли я включить этот код в глобальный класс функций?

Ну, я создал класс под названием: glo_function Внутри я создал функцию, которая вызывает

+(void) CallLoginScreen{
PFLogInViewController *login = [[PFLogInViewController alloc] init];
login.fields = PFLogInFieldsUsernameAndPassword | PFLogInFieldsLogInButton;
 [self presentModalViewController:login animated:NO];}

В My ViewController Iam, используя «callLoginScreen», как это

[glo_function CallLoginScreen]

Метод будет вызываться контроллером просмотра, но представление не будет отображаться. Ну, я получаю, что эта ошибка будет пытаться запустить приложение.

No known class method for selector 'presentModalViewController:animated:'

So I am pretty sure It do to the fact that I used the "self" in->

[self presentModalViewController:login animated:NO]

Может ли кто-нибудь помочь мне с этим? должно быть легко, надеюсь :)

-----------------------Отклик-------------------------- ----

Привет, после того, как я это сделал, приложение выйдет из строя. Метод вызова выглядит так:

    [glo_function showLoginScreenUsingViewController];

В glo_function.m метод выглядит так:

+ (void)showLoginScreenUsingViewController:(UIViewController *)VC {
PFLogInViewController *login = [[PFLogInViewController alloc] init];
login.fields = PFLogInFieldsUsernameAndPassword | PFLogInFieldsLogInButton;
[VC presentModalViewController:login animated:NO];}

Результат при запуске приложения:

2012-12-28 21:20:24.003 Logbuch40[1942:c07] 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException'
, reason: '+[glo_function showLoginScreenUsingViewController]: 
unrecognized selector sent to class 0x22e9ec
0
добавлено отредактировано
Просмотры: 1
de

1 ответы

«self» всегда ссылается на объект, в котором вы находитесь. В вашем случае это объект glo_function. Поэтому, когда вы говорите «я», вы разговариваете с неправильным объектом.

Вы все равно можете делать то, что хотите, но в своем методе glo_function, который вам нужно передать в ссылку на ваш контроллер просмотра. Тогда просто используйте это в своей функции вместо себя.

+ (void)showLoginScreenUsingViewController:(UIViewController *)VC {
     PFLogInViewController *login = [[PFLogInViewController alloc] init];
     login.fields = PFLogInFieldsUsernameAndPassword | PFLogInFieldsLogInButton;
     [VC presentModalViewController:login animated:NO];
}
2
добавлено
добавленный код для вас
добавлено автор Dancreek, источник
Хорошо, вот что я подумал! Ну, мне просто нужно знать, как это сделать! :)
добавлено автор Phill, источник
добавленный результат для вас
добавлено автор Phill, источник
После того, как я отлаживал немного больше, я узнал, что метод не вызывается, и приложение выходит из строя, прежде чем вводить метод showLoginScreenUsingViewController. Поэтому я думаю, что проблема в Line: [glo_function showLoginScreenUsingViewController];
добавлено автор Phill, источник
Найдена моя проблема! в моей glo_function.h Я забыл изменить имя метода. После этого я изменил метод вызова на: [GlobaleFunction showLoginScreenUsingViewController: self]; Большое спасибо! :) Задача решена! :)
добавлено автор Phill, источник