Iphone:在两个UIViewController之间来回移动的问题

时间:2010-04-07 05:13:10

标签: iphone objective-c uiviewcontroller uinavigationcontroller

首先让我描述一下问题的背景。我有2 UIViewController来电AdminViewControllerButtonReorderViewControllerAdminViewController包含1个按钮。 ButtonReorderViewController包含1个按钮和1张图片。 AdminViewController中的按钮与事件调用goToReorderButton相关联。 goToReorderButton的内容如下:

ButtonReorderViewController *buttonReorder = [[ButtonReorderViewController alloc] initWithNibName:@"ButtonReorderViewController" bundle:[NSBundle mainBundle]];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:buttonReorder];  //Add a Navigation Controller to the root view
[navController setNavigationBarHidden:TRUE];
buttonReorder = (ButtonReorderViewController *) navController;
[[buttonReorder view] setFrame:CGRectMake(0, -20, 320, 470)];
[self.view addSubview:buttonReorder.view];

我使用UINavigationController允许我向左和向右滑动。所以我在AdminViewController,然后点击goToReorderButton,加载ButtonReorderViewController。我能够向左和向右滑动(太棒了!!!)所以我点击了ButtonReorderViewController来电goToAdmin中的按钮,只需返回AdminViewController

-(void) goToAdmin{
     [self.view removeFromSuperview];
}

但是,一旦我回到AdminViewController,我就无法点击任何内容。程序不会出错,只是我根本无法点击按钮。如果我删除buttonReorder = (ButtonReorderViewController *) navController;中的行goToReorderButton,那么一切正常。知道如何解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

我不确定我是否关注过您,但我认为您应该使用UINavigationController方法在视图控制器之间导航:

管理视图控制器应该是导航控制器的根视图控制器,然后您可以按下并弹出重新排序视图控制器。

在app delegate(applicationDidFinishLaunching:method)中:

// TODO: Instantiate the adminController

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:adminController];
[window addSubview:navController.view];

在AdminViewController中(按钮触摸内部事件处理程序方法):

// TODO: Instantiate the buttonReorder

[self.navigationController pushViewController:buttonReorder animated:YES];

在ButtonReorderViewController中(后退按钮触摸内部事件处理程序方法):

[self.navigationController popViewControllerAnimated:YES];

当然,您必须在使用它们之前实例化视图控制器......


干杯,
迈克尔。

答案 1 :(得分:0)

听起来应用程序在你指出的那条线上崩溃了。调试控制台在崩溃时是否输出任何内容?

看起来线buttonReorder = (ButtonReorderViewController *) navController;在演员表上失败了。您确定ButtonReorderViewController延长了UINavigationController吗?如果没有,那么你就不能这样投。

答案 2 :(得分:-1)

我不确定,但我认为你可以使用NavigationController的PusViewController方法来完成你的工作。