我问了一个相关的问题,我意识到这个问题过于复杂,所以我做了一些设计决定并简化了我需要做的事情。我正在使用Xcode 5并为iOS 7设计。
我有一个导航控制器,一个带按钮的主菜单(menuViewController),以及一个点击主菜单上的按钮时到达的计算器(calculatorViewController)。
我的Xcode故事板是这样设置的,它完美运行(不是图像,但我认为应该很清楚):
navigation controller -----> menuViewController ------> calculatorViewController
我想设置我的主菜单有3个按钮,每个按钮都是以下之一: 2个独立的calculatorViewController单元 另外1个不相关的观点
由于其他不相关的视图,并且因为我认为其他一些设计和内容原因并不合理,所以我不想使用UITable Master / Detail设置。
我的问题是如何创建我的视图及其代码的“重复”,它可以链接到主菜单上的第二个按钮,并独立于第一个按钮运行。我知道如何将主菜单中的按钮链接到视图的第二个实例,而不是如何首先创建第二个实例。
当然,我想保留内存,代码量和使用最佳实践。
非常感谢任何帮助。提前谢谢!
编辑:看起来这还不清楚。我正试图弄清楚如何使它更多。菜单按钮 按钮1 ---->去计算器1 按钮2 ---->转到计算器2(计算器1的第二个相同的独立版本) 按钮3 ---->转到另一个不相关的观点
我知道如何让按钮进入视图。我想弄清楚创建第二个计算器的最佳方法是什么。另外,我想说明这两个计算器都需要能够同时运行,因此两者都需要保持在堆栈上。
感谢。
编辑:谢谢你的支持。这是我的代码,声明目标VC .h文件中的属性:
// Properties for segue identifiers
@property(nonatomic, readonly) NSString *tankCalcOne;
@property(nonatomic, readonly) NSString *tankCalcTwo;
以下是我的菜单/源VC的.m文件中的代码:
// This allows the view for tankCalcOne or Two depending on which button is clicked in the menu
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"tankCalcOne"])
{
[[segue destinationViewController] TankCalculatorViewController:self];
}
else ([segue.identifier isEqualToString:@"tankCalcTwo"]);
{
[[segue destinationViewController] TankCalculatorViewController:self];
}
}
我在if / else语句的两半中得到'没有已知的选择器TankCalculatorViewController的实例实例方法'错误。我可以看到为什么,因为我还没有声明它们,虽然我不确定我应该在哪里声明它们,因为TankCalculatorViewController是视图本身的名称。
答案 0 :(得分:0)
我认为你不需要第二个实例。您不必使用push segue。如果你使用push segue,它会自动携带navigationController。使用另一个segue或自定义的..
答案 1 :(得分:0)
我会尝试解释如何做到这一点。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
方法。检查segue.identifier
以确切知道哪个segue(您在步骤2中设置了这些)。在segue.destinationViewController
变量中,您将创建目标视图控制器,以便设置calculatorViewController.useSecondVariant或您选择使用的任何属性,以便计算器知道其工作模式。