iOS ViewControllers

时间:2012-08-06 18:29:28

标签: ios uiviewcontroller

好吧,这可能是一个非常基本的问题,如果是这样,我道歉,但它让我发疯,我真的需要更好地理解。

我正在开发一个应用程序,并为每个页面使用新的视图控制器和xib文件。

我使用以下代码调用每个页面: -

HelpVC = [[[HelpViewController alloc] initWithNibName:@"HelpViewController" bundle: [NSBundle mainBundle]]autorelease];
[self presentModalViewController:HelpVC animated:YES];

哪个效果很好。

但是,如果我在一个文件中声明了这个,然后我想在其他地方调用它,我会在整个地方收到错误。

有没有办法首先在类文件中初始化所有xib文件,然后在需要时从该文件中调用它们?

由于

这是我回来的错误

错误:'UserInputViewController'之前的预期说明符限定符列表

这似乎导致.h文件中的所有声明都出错,并显示上面的消息。

一些示例代码是: -

.h文件

#import <UIKit/UIKit.h>
#import "CgePWViewController.h"
#import "LogBackInViewController.h"
#import "LoginViewController.h"

@interface SettingsViewController : UIViewController
{
    CgePWViewController *cPWVC;
    LogBackInViewController *LBIVC;
    LoginViewController *login;
}

@property(nonatomic, retain) CgePWViewController *cPWVC;
@property(nonatomic, retain) LogBackInViewController *LBIVC;
@property(nonatomic, retain) LoginViewController *login;

所以基本上只要我在LoginViewController中添加它就会导致其他一切错误,如果我把它拿出来那么应用程序运行完美。

2 个答案:

答案 0 :(得分:1)

您的LoginViewController.h是否也导入了SettingsViewController?它似乎是一个“交叉引用”(我不知道这个术语在英语中是否有意义,就像在葡萄牙语中一样)。

在你之前

@interface SettingsViewController : UIViewController

放一个

@class LoginViewController;

并检查它是否有帮助。

答案 1 :(得分:0)

不要初始化视图控制器以将它们放在属性中。相反,请在需要时立即创建它们。

假设您想要在有人按下按钮时显示视图控制器。将此方法添加到视图控制器(假设它名为MyFirstViewController):

- (IBAction)someButtonDidPush: (UIButton *)sender {
    MySecondViewController *vc = [[MySecondViewController alloc] init];

    // Do stuff and then show it. One way may be like this:
    [self presentViewController: vc animated: YES completion: nil];
}

使用上述方法挂钩按钮。不需要属性!你(可能)已经完成了。