0

我有两个 ViewController,一个名为 ViewController,另一个名为 Signup,

这是我用来调用 Signup.xib 文件的代码,

- (IBAction)signupButton:(id)sender {
Signup *myView = [[Signup alloc] initWithNibName:@"Signup" bundle:nil];
[self.view addSubview:myView.view];
  }

此代码有效。它启动了 Signup Viewcontroller,但是当我尝试从 Signup.m 调用 ViewController.xib 文件时它不起作用。

这是我从 Signup.m 文件中调用 ViewController.xib 文件的方法,

- (IBAction)loginView:(id)sender {
    ViewController *dashboardView = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    [self.view addSubview:dashboardView.view];
}

我已经在 Signup.m 文件中导入了 ViewController.h 文件。loginView 按钮有效,因为我在按钮中放置了一个 NSLog() 以查看它是否有效并且确实有效。但是当我单击 loginView 按钮时,我得到了某种类型的错误。我不知道 xcode 中有什么错误,但它是这样的,

0x110309b:  movl   8(%edx), %edi <- Thread 1: EXc_BAD_ACCESS (code=1, address=0x60000008)

它以绿色突出显示,我不知道它是什么意思。

4

4 回答 4

1

正如用户 Priyatham51 所说,数字 3 是您收到错误的原因。如果您不使用 UINavigationController 推送/弹出视图,另一种方法是将 Signup 视图控制器呈现为模态视图。然后,当您想返回时,可以在 Signup 控制器内部调用。

[self dismissModalViewControllerAnimated:YES];

但是,您需要将您的注册按钮更改为。

- (IBAction)signupButton:(id)sender {
    Signup *myView = [[Signup alloc] initWithNibName:@"Signup" bundle:nil];
    [myView setModalPresentationStyle:UIModalPresentationFormSheet]; //you can change the way it is presented
    [myView setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; //you can change the animation
    [self presentModalViewController:myView animated:YES]; //show the modal view
  }

我希望这可以帮助你。

于 2013-09-26T15:42:08.510 回答
1

试试这个向用户展示注册视图:

    - (IBAction)signupButton:(id)sender {
         Signup *myView = [[Signup alloc] initWithNibName:@"Signup" bundle:nil];
         [self presentModalViewController:myView  animated:YES];
      }

并通过关闭注册视图控制器返回登录视图

    - (IBAction)loginView:(id)sender {
         [self dismissModalViewControllerAnimated:YES];
     }
于 2013-09-26T15:40:03.433 回答
0

您的代码无法正常工作的主要原因是您试图再次将 ParentView 作为子视图添加到子视图中,而您不应该这样做。

看来您正在尝试这样做。

  1. 您创建了 LoginView
  2. 您创建了 SignupView 并将其作为子视图添加到 LoginView。所以 LoginView 是父级,而注册是子级。
  3. (这是你的错误)。您正在尝试将 LoginView 添加为 SignupView 的子视图。这永远不会奏效。

尝试这样做

我建议您首先创建您的 LoginView 并使用“SignUp”按钮。因此,当用户单击注册“推送”登录视图控制器顶部的新 SignupView 控制器时。并在您的注册视图上有一个“登录视图”按钮。当用户单击该按钮时,尝试“关闭当前视图控制器”。所以用户将再次显示登录视图。您可以将其用作解决方法。

请看一下这个例子

http://www.roseindia.net/tutorial/iphone/examples/pushView.html

这里还有一个工作示例

http://www.theappcodeblog.com/2011/08/15/iphone-development-tutorial-present-modal-view/

于 2013-09-26T15:21:25.837 回答
0

您通常不会将 View Controller 的视图添加到当前视图中,但如果这是您想要实现的,请先尝试清理项目。有时 XCode 在您添加/删除它们后无法正确加载 nib 文件。进入产品菜单->“清理”,然后按住“选项”键,进入产品菜单并按“清理构建文件夹”。

另外,添加“所有异常”断点。它将位于 XCode 的左侧面板上,在“断点”选项卡下。在该选项卡上,底部有“+”按钮。单击“添加异常断点”,然后按“完成”。这基本上会给你更多关于你的崩溃的信息。

我知道这并不能完全帮助解决您的问题,但会为您提供更多详细信息。

于 2013-09-26T15:03:38.867 回答