Передача делегата в методе prepareForSegue - PullRequest
0 голосов
/ 16 января 2012

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

Вот мой код в моем TableView, который переходит через push к другому 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 Ответ

1 голос
/ 17 января 2012

Ошибка, которую вы получаете, связана с типами.

Класс NextViewController, очевидно, имеет метод с именем -setEntity:, который принимает объект типа Entity *.Ошибка в том, что вы пытаетесь дать -setEntity: аргумент неправильного типа.Вы пытаетесь присвоить ему NSInteger (это число 0, 5, -999), но оно хочет Entity.

Вы на правильном пути для передачи данных из табличного представления в NextViewController.Вам просто нужно выполнить одно из следующих действий:

  • передать Entity в -setEntity: (возможно, класс Entity имеет конструктор, который принимает NSInteger?)
  • добавить метод к NextViewController, который принимает NSInteger, и вызвать его вместо -setEntity:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...