iPhone多视图流问题

时间:2011-06-09 21:41:26

标签: iphone ios ios4 uiviewcontroller rootview

我有一个根视图控制器,它包含我的登录视图控制器的插座。根视图应控制到下一个视图的流程,但我的登录视图有按钮继续。如何在我的根控制器中将按钮的内部设置为IBAction?

我有一个方法是保留一个指向我创建登录类的根类的指针(新代码被注释掉):

// RootViewController.m

- (void)viewDidLoad {
    LoginViewController *loginController = 
        [[LoginViewController alloc]initWithNibName:@"LoginView" bundle:nil];
    self.loginViewController = loginController;
    //loginViewController.parent = self;
    [self.view insertSubview:loginController.view atIndex:0];
    [loginController release];
    [super viewDidLoad];
}

- (IBAction)loginPressed: (id)sender
{
    self.loginViewController.loginButton.enabled = NO; //yea... doesnt work
}

所以在IB中我向Nib添加了一个UIViewController,并将其作为一个插座,然后将按钮的内部事件分配给loginPressed,这是在根控制器(父节点)中定义的...这样做不是很明确引用RootViewController中self.loginViewController的控件。

是否有正确的方法来执行此操作。

-frustrated c ++ / c#/ java coder

3 个答案:

答案 0 :(得分:1)

您是否考虑过以模态方式展示loginView?然后你可以弹出视图并返回rootViewController并从那里继续前进。

答案 1 :(得分:0)

在与该XIB相同的类中创建按钮按下的方法出口并将其连接起来。我假设你的登录视图是由根控制器创建的......在登录视图上为根视图创建一个assign属性,然后在创建登录视图时将根控制器分配给它。然后,在登录视图的“按下按钮”方法中,您可以引用根视图控制器。拼写出来:

在LoginController的.h文件中

@property (nonatomic, assign) RootViewController* rvc;
在LoginController的.m文件中

@synthesize rvc;

在Root View Controller的“制作登录控制器代码”中,在您初始化之后但在呈现之前:

[loginController setRvc:self];
在您的LoginController的按钮触摸方法中

[[self rvc] whateverMethodThatDoesLoginStuff];

这样,您就可以在用户按下按钮和“登录”代码之间找到路径。

答案 2 :(得分:0)

您可以将loginViewController作为IBOutlet,将其操作'touch up inside'连接到-loginPressed:文件所有者。

或者您可以自己以编程方式在-viewDidLoad中分配和初始化控制器,并以编程方式设置操作。

但你所做的似乎混合了两种方式。