2012-01-15 61 views
0

我有一个问题,在iOS应用程序中将对象从TableView传递给ViewController。我正在使用故事板并选择了ARC,并在我的“prepareForSegue”方法中传递了委托。在prepareForSegue方法中传递一个委托

这是我在我的TableView中的代码,通过推塞格斯到另一个视图控制器:

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

    NextViewController *vc = (NextViewController *)[segue destinationViewController]; 

    vc.managedObjectContext = managedObjectContext; 

    if ([[segue identifier] isEqualToString:@"EditCategory"]) 
    { 

    NSInteger selectedIndex = [[self.tableView indexPathForSelectedRow] row]; 

    // I get a red warning which states "Cast of 'NSInteger' (aka 'int') to 'Entity' is disallowed with ARC" on this line: 
    [vc setEntity:(Entity *)selectedIndex]; 
    } 
} 

是否有人有我如何才能从TableView中到ViewController通过我的对象有什么建议?我是新手编程,并尝试过各种表达式,但似乎没有任何工作。

回答

1

您遇到的错误与类型有关。

NextViewController显然有一个方法称为-setEntity:需要一个对象类型Entity *。错误是因为你试图给-setEntity:一个错误类型的参数。你试图给它一个NSInteger(这是一个数字如0,5,-999),但它想要一个Entity

您正在将数据从表视图传递到NextViewController。你只需要执行下列操作之一:

  • 传递一个Entity-setEntity:(?是否Entity类也许 有一个构造函数的NSInteger
  • 添加到NextViewController的方法,它接受一个NSInteger,并呼吁,而不是-setEntity:
+0

感谢您指出我在正确的方向。我一直在试图实现协议/委托方法,但我的managedObject出现“空”。我想我无法决定哪个视图控制器实际上传递了managedObject。 ViewController上的选择器的结果仅显示在TableViewController上。我是否只需要从ViewController向TableViewController的一种方式传递managedObject?还是我需要在两个方向传递managedObject? – PopUp 2012-01-17 21:30:28