2014-01-20 29 views
0

我正在撕掉我的头发。我有一个菜单视图,有2个按钮。每个按钮都通过单独的segue标识符路由到另一个视图控制器。也就是说,他们都指向相同的视图控制器,但在不同的阶段。如何投射到我的UIViewController

我的研究表明,我需要'投射'到我的目标视图控制器,我不能为我的生活找到有效的代码,也许,也许更复杂,在哪里放代码。

这些都是在我的目的地/的properties TankCalculatorViewController视图控制器头文件:

// Properties for segue identifiers 
@property(nonatomic, readonly) NSString *tankCalcOne; 
@property(nonatomic, readonly) NSString *tankCalcTwo; 

此代码是在我的菜单实现文件:

// This allows the view for tankCalcOne or Two depending on which button is clicked in the menu 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    //cast??? 

    if ([segue.identifier isEqualToString:@"tankCalcOne"]) 
    { 
     [[segue destinationViewController] TankCalculatorViewController:self]; 
    } 
    else ([segue.identifier isEqualToString:@"tankCalcTwo"]); 
    { 
    [[segue destinationViewController] TankCalculatorViewController:self]; 
    } 
} 

我have看到了几十个答案在这里说些的比如,“你需要投射到你的自定义类”,但是我所看到的代码示例中没有一个完全适用于我正在做的事情,并且我不知道该把代码放在哪里。我猜测它会出现在目标视图控制器的头文件中,然后我会将TankCalculatorViewController.h导入到我的菜单实现中,但这在黑暗中确实是一个镜头。我一直在这个世界上进行速成教程,甚至在用这种语言工作了几个月之后,一些概念,当然还有术语仍在沉入其中。任何帮助都将不胜感激。

如果有帮助,我收到以下错误在我的if/then:

提前

感谢“的选择TankCalculatorViewController没有已知实例的实例方法”。

+0

** [((MyViewController *)[Segue公司destinationViewController])TankCalculatorViewController:自我]; **试试这个投它 – CoolMonster

回答

1

简单做像

[(MyControllerClassName *)[segue destinationViewController]TankCalculatorViewController:self]]; 
+0

感谢您的答案。就像我上面问的那样,我会在哪里放这个代码?在目标标题中?在我已经在菜单实施中的代码中的某处? –

+0

您使用了prepareForSegue方法 – codercat

+0

我的确的确如此。那么这个代码是在那个方法里面?我是否用'TankCalculatorViewController'替换代码中的'MyControllerClass'? –

0

C概念我一直在做这样的

if ([[segue identifier] isEqualToString:@"InvoiceDetail"]) 
{ 
    IVInvoiceDetailViewController *detailViewController = [segue destinationViewController]; 
    detailViewController.yourString = self.yourStringObject; 
} 
+0

感谢您的回应。我不知道这是如何适用于我想要做的。我的目的地视图基本上是一个计算器,但我需要其中2个独立同时运行。我没有使用表格视图。 –

+0

你可以在这里使用你的字符串,让我更新代码,就像这样,你可以将当前的控制器数据传递给另一个控制器并管理该控制器。 – Retro

+0

我不想在控制器之间传递数据。上述方法引起的变化比我想象的要多。不知道哪里yourString,yourStringObject被发现。我只是想打开我的计算器视图的单独版本。他们不需要共享任何数据。 –