2012-01-15 3 views
0

У меня возникла проблема с передачей объекта из TableView в ViewController в приложении IOS. Я использую раскадровку и избрал ARC и передал делегата в мой метод «prepareForSegue».Передача делегата В метод prepareForSegue

Вот мой код в моем TableView, который перетекает через толчок к другому ViewController:

- (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 подходит к «null». Я думаю, что у меня возникли проблемы с выбором того, какой контроллер представления фактически передает управляемый объект. Результаты сборщика на ViewController отображаются только в TableViewController. Мне нужно только передать управляемый объект одним способом из ViewController в TableViewController? Или мне нужно передать управляемый объект в обоих направлениях? – PopUp