在iPhone应用程序中跨多个屏幕使用通用覆盖的最佳方法是什么?
我正在创建一个应用程序,其主屏幕可以由三种场景之一组成。我们叫他们A、B和C 这些场景的功能截然不同,其用户界面也是如此。为了便于讨论,我们假设每个场景都是一种不同的逻辑拼图,它们之间不共享任何通用的UI元素、逻辑或功能 因此,我希望每个场景都在自己的ViewController中实现。场景将通过“主菜单”以模式显示,因此主菜单将调用类似于[self-presentModalViewController:ScenarioX animated:YES]的内容来显示场景 这里有一个问题:每个场景都有一个特定的用户界面,这在它们之间很常见——比如,屏幕顶部的状态栏中有一个倒计时时钟。通用UI将有自己的逻辑,尽管是最小的。它显然必须运行倒计时时钟,可能在时钟运行时显示“time's up”(时间已到)消息,并响应“back”(返回)按钮,该按钮关闭模式ViewController并返回主菜单 在代码重用、内存管理等方面,实现这一点的最佳方式是什么 我希望有一种技术上的特殊性,而不仅仅是一种“方法”。例如,如果正确的答案是创建状态栏/时钟作为其自己的UIView子类,然后以编程方式将其添加到场景的视图中,那么很好:这是否意味着场景的ViewController必须运行时钟、后退按钮等等在iPhone应用程序中跨多个屏幕使用通用覆盖的最佳方法是什么?,iphone,ios,uiviewcontroller,Iphone,Ios,Uiviewcontroller,我正在创建一个应用程序,其主屏幕可以由三种场景之一组成。我们叫他们A、B和C 这些场景的功能截然不同,其用户界面也是如此。为了便于讨论,我们假设每个场景都是一种不同的逻辑拼图,它们之间不共享任何通用的UI元素、逻辑或功能 因此,我希望每个场景都在自己的ViewController中实现。场景将通过“主菜单”以模式显示,因此主菜单将调用类似于[self-presentModalViewController:ScenarioX animated:YES]的内容来显示场景 这里有一个问题:每个场景都有
或者是否可以创建一个StatusClock ViewController来管理状态栏、时钟等,并将其添加为场景视图的子视图?为此,只要我正确解释了您的问题,您的意思是,您有3个对象共享一些次要的通用功能。我要做的是将公共功能抽象为基类,然后让其他3个类从基类继承 因此,您有一个ScenarioBase,它具有常见的功能,如timer属性、startTimer函数、stopTimer函数、倒计时函数、startingTime变量,然后可能是completedScenario的委托协议(这在您的模态视图控制器上调用Dislose) 然后实现自定义拼图的代码,在init中设置其启动时间,调用其继承的startTimer函数,就这样了。您可以在scenarioIsComplete的父类中实现默认功能,可能类似于
@interface Scenario1 : ScenarioBase {
UIImageView *puzzleBackground; //I don't really know what you want as members
//Lets say this is a custom background for the puzzle
}
@end
-(void)scenarioIsComplete {
UIViewController *vc = [(ScenarioAppDelegate)([[UIApplication sharedApplication] delegate]) viewController];
[vc dismissModalViewController];
}
这将处理所有儿童的解雇问题。谢谢。我想我已经走了一半了,我总是忘记协议。我脑子里有太多的.NET。这就结束了我的循环,谢谢你给我举了一个具体的例子。
-(void)scenarioIsComplete {
UIViewController *vc = [(ScenarioAppDelegate)([[UIApplication sharedApplication] delegate]) viewController];
[vc dismissModalViewController];
}