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

Я думаю, что у меня есть простая проблема с моим приложением. Прежде всего, я использую 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
nl ja 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, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.