不使用UITableView的详细视图?

时间:2014-01-18 08:09:36

标签: ios uinavigationcontroller

我问了一个相关的问题,我意识到这个问题过于复杂,所以我做了一些设计决定并简化了我需要做的事情。我正在使用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是视图本身的名称。

2 个答案:

答案 0 :(得分:0)

我认为你不需要第二个实例。您不必使用push segue。如果你使用push segue,它会自动携带navigationController。使用另一个segue或自定义的..

答案 1 :(得分:0)

我会尝试解释如何做到这一点。

  1. 在故事板中创建所有需要的segues和views / scenes(只有一个带有两个segues的计算器场景)
  2. 为您的segues设置不同的标识符。这很重要。
  3. 为您的viewcontrollers创建源代码,并将它们分配给Storyboard的场景(同样只有一个计算器视图控制器,其中包含一个属性供您指定模式)
  4. 在menuViewController中设置- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法。检查segue.identifier以确切知道哪个segue(您在步骤2中设置了这些)。在segue.destinationViewController变量中,您将创建目标视图控制器,以便设置calculatorViewController.useSecondVariant或您选择使用的任何属性,以便计算器知道其工作模式。