Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 多个视图控制器。有上限吗?_Iphone_Xcode_Ios_Viewcontroller - Fatal编程技术网

Iphone 多个视图控制器。有上限吗?

Iphone 多个视图控制器。有上限吗?,iphone,xcode,ios,viewcontroller,Iphone,Xcode,Ios,Viewcontroller,我正在组装一个iPad应用程序,它允许用户通过虚拟旅行完成他们的工作。他们能够在屏幕上向前移动,屏幕上的一些按钮会指向其他材料,如视频或更多信息 如果Keynote支持超链接,那么它将非常适合,但事实并非如此,我正在尝试在Xcode中重新创建巡演 我是一个新手,但我花了时间研究,有代码来显示“幻灯片”,并能够在幻灯片中前后移动。幻灯片不再是一个带有全屏图形和各种选项按钮的图像视图,有些幻灯片很简单,除了“后退”和“前进”之外没有其他内容,但其他幻灯片将具有附加链接 然而,以这种过于简单的方式来做

我正在组装一个iPad应用程序,它允许用户通过虚拟旅行完成他们的工作。他们能够在屏幕上向前移动,屏幕上的一些按钮会指向其他材料,如视频或更多信息

如果Keynote支持超链接,那么它将非常适合,但事实并非如此,我正在尝试在Xcode中重新创建巡演

我是一个新手,但我花了时间研究,有代码来显示“幻灯片”,并能够在幻灯片中前后移动。幻灯片不再是一个带有全屏图形和各种选项按钮的图像视图,有些幻灯片很简单,除了“后退”和“前进”之外没有其他内容,但其他幻灯片将具有附加链接

然而,以这种过于简单的方式来做这件事意味着我最终拥有了大量的视图控制器和XIB文件,目前我知道这肯定比任何应用程序都应该拥有的要多。然而,它确实可以工作,尽管有时在设备上运行它时,而不是在模拟器中,它会爆炸

我的问题是,一个应用程序中的视图控制器数量是否有限制,并且数量过多是否会导致不稳定?我知道处理视图的其他方法,例如将它们放在阵列中,并将它们推出单个视图控制器,但这并不能给我为不同内容定制幻灯片的灵活性

我欢迎任何帮助或建议,我希望以正确的方式发布这个问题(这是我的第一次)

非常感谢 基隆

我用来操纵视图的代码是

-(IBAction)goBack {
    [self dismissModalViewControllerAnimated:NO];
}

-(IBAction)goForward {  
    Slide5ViewController *screen = [[Slide5ViewController alloc] initWithNibName:nil bundle:nil];
    screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentModalViewController:screen animated:YES];
    [screen release];
}   
基隆

为什么不只使用一个“幻灯片”视图控制器和一个不同的图像?使用某种数据结构来保存有关每张幻灯片的按钮、图像和路径的信息,然后继续为每张幻灯片重复使用相同的视图控制器

视图控制器可以在当前可见视图和自身的下一个实例化之间转换时动态加载每个图像。。。应该可以只使用一个视图控制器

如果您对使用Interface Builder感到满意,请继续使用XIB文件来布局所有内容。但是,不要将每个“文件的所有者”设置为不同的视图控制器,而是将它们都设置为相同的视图控制器。然后,在您的
iAction
方法中(当用户按下按钮时),使用一些逻辑来说“我现在在这个视图上,而用户按下了这个按钮,那么我下一步应该去哪一个?”

然后,调用类似于
loadNewSlide:
的方法,该方法可能如下所示:

- (void) loadNewSlide:(NSInteger)slideNumber
{
  // Make a string with the new XIB name
  NSString* xibName = [NSString stringWithFormat:@"slide-%d",slideNumber];

  // Create the next slide view controller (it doesn't matter if you create a slide view 
  // controller from within another slide view controller, remember, they are all just  
  // objects)
  SlideViewController *newSlideViewController = [[SlideViewController alloc] initWithNibName:xibName bundle:nil];

  // Change the view
  UIWindow *theWindow = [self.view superview];
  [self.view removeFromSuperview];
  [theWindow addSubview:newSlideViewController.view];

  // Release, the view stack now should be retaining the view controller instead
  [newSlideViewController release];
}
这将比使用75个视图控制器(如您之前所建议的)进行“模式”运行要好得多,因为这样一次只会在内存中保留一张幻灯片-无论您当前正在查看什么-然后将及时加载下一张幻灯片以移动到它。

Kieron

为什么不只使用一个“幻灯片”视图控制器和一个不同的图像?使用某种数据结构来保存有关每张幻灯片的按钮、图像和路径的信息,然后继续为每张幻灯片重复使用相同的视图控制器

视图控制器可以在当前可见视图和自身的下一个实例化之间转换时动态加载每个图像。。。应该可以只使用一个视图控制器

如果您对使用Interface Builder感到满意,请继续使用XIB文件来布局所有内容。但是,不要将每个“文件的所有者”设置为不同的视图控制器,而是将它们都设置为相同的视图控制器。然后,在您的
iAction
方法中(当用户按下按钮时),使用一些逻辑来说“我现在在这个视图上,而用户按下了这个按钮,那么我下一步应该去哪一个?”

然后,调用类似于
loadNewSlide:
的方法,该方法可能如下所示:

- (void) loadNewSlide:(NSInteger)slideNumber
{
  // Make a string with the new XIB name
  NSString* xibName = [NSString stringWithFormat:@"slide-%d",slideNumber];

  // Create the next slide view controller (it doesn't matter if you create a slide view 
  // controller from within another slide view controller, remember, they are all just  
  // objects)
  SlideViewController *newSlideViewController = [[SlideViewController alloc] initWithNibName:xibName bundle:nil];

  // Change the view
  UIWindow *theWindow = [self.view superview];
  [self.view removeFromSuperview];
  [theWindow addSubview:newSlideViewController.view];

  // Release, the view stack now should be retaining the view controller instead
  [newSlideViewController release];
}

这比使用75个视图控制器(如您之前所建议的)以“模式”方式运行要好得多,因为这样一次只会在内存中保留一张幻灯片-无论您当前正在查看什么-然后将及时加载下一张幻灯片以移动到它。

首先,日志中有什么错误

您是否正确实现了视图控制器的viewDidUnload方法?视图控制器应该能够卸载加载的xib。此外,在didReceiveMemoryWarning中发布数据


其次,最好使用UINavigationController来处理视图控制器堆栈,而不是模态视图控制器堆栈。您可以隐藏或自定义导航栏。

首先,日志中有什么错误

您是否正确实现了视图控制器的viewDidUnload方法?视图控制器应该能够卸载加载的xib。此外,在didReceiveMemoryWarning中发布数据


其次,最好使用UINavigationController来处理视图控制器堆栈,而不是模态视图控制器堆栈。您可以隐藏或自定义导航栏。

您好,谢谢。我考虑过这条路线,但作为一个新手,沿着我的路线走会更容易,尽管我知道这是一条真正的基本路线。如果我选择您的路线,我将如何处理特定幻灯片的独特属性。例如,一张幻灯片将显示一台机器的图片,单击该机器的特定部分将带您进入更详细的视图,并从那里观看显示其运行的电影。目前我正在使用Interface Builder,因为它在视觉上非常易于使用,但我是否需要转储它并以编程方式完成所有操作?谢谢您的帮助。我将继续执行你的建议。最好的礼物,谢谢。我考虑过这条路线,但作为一个新手,沿着我的路线走会更容易,尽管我知道这是一条真正的基本路线。如果我选择您的路线,我将如何处理特定幻灯片的独特属性。例如,一张幻灯片将显示一台机器的图片,点击该机器的特定部分将带您进入一个更详细的视图,并从那里进入一个电影商店