0

我对 xcode 相当陌生,正在创建一个具有五个视图(xib 文件)的单视图应用程序。我没有使用导航控制器或情节提要有两个原因。如果我使用 Storyboard,我不得不让我的其他视图成为 UIView 文件。这些没有

-(void)viewDidLoad 

这使我无法加载我的应用程序中的一些计时器。

我可以使用以下代码从第一页导航到第二页,依此类推,一直到第五页/视图。

-(IBAction)pagethree {
    countdown=[[Countdown alloc] initWithNibName:@"Countdown" bundle:nil];
    [self.view addSubview:countdown.view];  
}

但是,当我想从第五个视图返回到第一页时,我遇到了问题。我的第一个视图称为 ViewController。如果我尝试上面的代码,我的应用程序充满了错误。

我也尝试过使用

-(IBAction)back {
    [self.view removeFromSuperview]; 
}

但这只是让我回到了一个观点。

我的第五个视图控制器称为 Statistics,第一个称为 ViewController。我可以编写什么代码从最后一个视图返回到第一个视图?

谢谢

4

1 回答 1

1

首先,要回答你的问题,你需要为每个addSubview做一个removeFromSuperview (或类似的):你做了。每次您执行 addSubview 时,您都将新屏幕“放在”最后一个屏幕的“顶部”,就像堆栈一样。当您到达第 5 个视图时,您有 4 个其他视图“背后”。(实际上,这并不完全是 addSubview 所做的,但我只是在描述您特定情况下的效果)。

但我认为你做错了......你应该阅读更多关于故事板和导航控制器的信息。两者都与 UIViewController 一起使用,并且开箱即用地支持您尝试手动执行的操作。例如,使用导航控制器来推送一个新的视图控制器,你可以这样做:

[navigationController pushViewController:viewController animated:YES];

您可以根据需要多次执行此操作。然后,要返回一次,请执行以下操作:

[navigationController popViewControllerAnimated:YES];

并直接回到第一个:

[navigationController popToRootViewControllerAnimated:YES];

希望这可以帮助。

于 2013-03-06T20:51:34.180 回答