从类中调用视图

时间:2012-12-28 09:29:32

标签: iphone ios uiviewcontroller

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

现在我要创建该函数并让它由

中的视图控制器调用

-(void) viewDidLoad

效果很好。

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

我创建了一个名为glo_function的类 在其中我创建了一个调用

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

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

[glo_function CallLoginScreen]

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

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

所以我很确定这是因为我使用了“自我”in->

[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

1 个答案:

答案 0 :(得分:2)

"自"总是指你所在的对象。在你的情况下,它是glo_function对象。因此,当你说自己时,你正在与错误的对象交谈。

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

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