0

我有一个根视图控制器,其中包含我的登录视图控制器的出口。根视图应该控制到下一个视图的流程,但我的登录视图有继续的按钮。如何在我的根控制器中将按钮的触摸设置为 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 中,我将 UIViewController 添加到 Nib 并将其父级作为插座,然后将按钮的触摸内部事件分配给在根控制器(父级)中定义的 loginPressed ......这并没有很好地明确引用来自 RootViewController 中的 self.loginViewController 的控件。

有没有正确的方法来做到这一点。

- 受挫的 c++ / c# / java 编码器

4

3 回答 3

1

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

于 2011-06-09T21:43:48.953 回答
0

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

在 LoginController 的 .h 文件中:

@property (nonatomic, assign) RootViewController* rvc;

在 LoginController 的 .m 文件中:

@synthesize rvc;

在根视图控制器的“制作登录控制器代码”中,在你初始化它之后但在你展示它之前:

[loginController setRvc:self];

在您的 LoginController 的按钮触摸方法中:

[[self rvc] whateverMethodThatDoesLoginStuff];

这样,您就可以在用户按下按钮和您的“do-login”代码之间获得路径。

于 2011-06-09T21:50:41.263 回答
0

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

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

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

于 2011-06-09T21:53:51.970 回答