0

我想我的应用程序有一个简单的问题。首先,我使用 PraseSDK 来使用他们提供的 LoginView。

现在我要创建该函数并让它由视图控制器调用

-(void) viewDidLoad

它工作得很好。

现在我想知道是否可以将该代码放入全局函数类中?

好吧,我创建了一个名为的类:glo_function 在其中我创建了一个调用函数

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

在我的 ViewController 中,我像这样使用“callLoginScreen”

[glo_function CallLoginScreen]

该方法将由视图控制器调用,但视图不会显示。好吧,我得到那个错误会试图运行应用程序。

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

所以我很确定这与我在->中使用“自我”这一事实有关

[self presentModalViewController:login animated:NO]

有人可以帮我解决吗?应该很容易,希望:)

- - - - - - - - - - - -回复 - - - - - - - - - - - - - ----

嗨,我这样做后,应用程序崩溃了。Call 方法如下所示:

    [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
4

1 回答 1

2

“self”总是指您所在的对象。在您的情况下,它是 glo_function 对象。因此,当您说 self 时,您正在与错误的对象交谈。

你仍然可以做你想做的事,但是在你的 glo_function 方法中你需要传递一个对你的视图控制器的引用。然后在你的函数中使用它而不是 self.

+ (void)showLoginScreenUsingViewController:(UIViewController *)VC {
     PFLogInViewController *login = [[PFLogInViewController alloc] init];
     login.fields = PFLogInFieldsUsernameAndPassword | PFLogInFieldsLogInButton;
     [VC presentModalViewController:login animated:NO];
}
于 2012-12-28T14:13:43.207 回答