Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.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:创建一个能逐个显示50个客观问题的应用程序的最佳实践是什么_Iphone_Objective C_Mobile - Fatal编程技术网

IPhone:创建一个能逐个显示50个客观问题的应用程序的最佳实践是什么

IPhone:创建一个能逐个显示50个客观问题的应用程序的最佳实践是什么,iphone,objective-c,mobile,Iphone,Objective C,Mobile,IPhone:创建应用程序的最佳实践是什么?该应用程序会逐一显示50个客观问题。测试结束时,用户应该能够在UI上看到分数。 为了存储问题,我使用SQLLite DB,将我的所有问题存储在一个表中,并在NSMutable数组中本地检索/存储。 现在我不知道如何“一个接一个”地在问题之间导航,我想UI导航是我想要的,但我不知道如何使用UI导航视图一个接一个地显示问题,如果我错了,请纠正我 我最近为一个客户端创建了一个类似的应用程序。我的策略是使用IntroViewController、Questio

IPhone:创建应用程序的最佳实践是什么?该应用程序会逐一显示50个客观问题。测试结束时,用户应该能够在UI上看到分数。 为了存储问题,我使用SQLLite DB,将我的所有问题存储在一个表中,并在NSMutable数组中本地检索/存储。
现在我不知道如何“一个接一个”地在问题之间导航,我想UI导航是我想要的,但我不知道如何使用UI导航视图一个接一个地显示问题,如果我错了,请纠正我

我最近为一个客户端创建了一个类似的应用程序。我的策略是使用IntroViewController、QuestionViewController和ScoreViewController

QuestionViewController包含我创建的用于可视化问题对象的UIControl子类。QuestionViewController与TestManager对象交互以提取问题列表,它响应来自UIControl子类的输入,然后将新问题分配给UIControl


我的策略是通过避免创建大量视图控制器来保持低内存。我利用CATTransitions让用户对每个问题都有一个新屏幕的感觉。

最简单的方法可能是每个问题都有一个新屏幕。问题是您有50个元素要显示,这可能太多了(因为您肯定至少会收到内存警告)

为了避免内存警告并有效地执行此操作,您需要实现一个类似于3视图堆栈的结构。例如,视图将是A、B和C

...C←→A←→B←→C←→A...
例如,如果您在B中选择了A,那么您希望导航到上一个(左)问题,您将保存当前问题状态,将A及其状态加载到上一个视图并显示它。现在,下一个问题和上一个问题将分别加载到B和C视图中。不复杂,对吧

您可以使用一个和三个UIViewController来模拟此结构, 每个UIViewController都应该能够在问题出现和消失之前加载并保存问题及其状态

您可以从UINavigationController使用以下方法以编程方式导航,并免费获得动画过渡;)


希望对您有所帮助

非常感谢您分享您的经验,我从未尝试过Catransions,现在我将尝试一下。同时让我知道你对这种方法的想法,你可以使用这种方法;我并不特别喜欢它,因为在任何时候内存中都会有3个视图控制器。转换将为您提供相同的用户体验,但将视图控制器限制为1。还有一个基本问题:如何将转换应用于不同问题的QuestionViewController?从逻辑上讲,假设有10个问题,则只有一个视图用于显示问题。现在,如果用户回答了第一个问题,将有两个操作:更改问题和应用转换。转换是内置的吗?如果你有任何示例URL plz共享。非常感谢。我想我得到了答案,请忽略我之前的问题。谢谢你的时间。推/弹出方法的唯一问题是转换向不同的方向移动。一个潜在的“修复”方法是推送视图控制器,然后手动从导航堆栈中移除较低的视图控制器。如果我理解正确,在任何给定时间点,将加载3个问题-1(1)+1。在读了几篇博客之后,我现在有点困惑,你能澄清我一个基本的问题吗?我有很好的在“两种”观点之间转换的经验。带有按钮标签“加载下一个视图”的“第一个视图”,单击按钮后按下它们[self.navigationController pushview controller:nextViewController animated:YES];对于此场景或仅我的数据将根据用户单击的下一步/上一步而更改,我如何加载带有转换/更新问题的相同问题视图?创建一个方法-(void)loadQuestion:(MyQuestion*)问题{…}并在按下ViewController:animated:method之前调用该方法,或者在任何时候更新视图控制器。关于动画,只需将同一问题加载到不同的视图控制器中,然后按下该问题并删除上一个问题。实际上,只要你在当前问题后面有上一个问题,你使用什么控制器并不重要;)
– pushViewController:animated:
– popViewControllerAnimated: