Я все еще новичок в раскадровке. Я потратил два дня на устранение этой проблемы. Кажется, что контроллер вида назначения segue не работает должным образом, когда вызывается -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
.
У меня есть табличное представление, и когда ячейка касается, она вызывает переход
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
VAItem *item = [category itemAtIndex:indexPath.row];
[self performSegueWithIdentifier:@"SegueShowDetail" sender:item];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"SegueShowDetail"]) {
VADetailViewController *detailViewController = segue.destinationViewController;
detailViewController.item = (VAItem*) sender; // <-- THIS ASSIGNMENT DOES NOT WORK
}
}
Моя отладка показывает, что item
правильно передается в prepareForSegue
, но detailViewController.item
- это дикий указатель. Он не инициализирован, и назначение =
не имеет никакого эффекта.
Я установил точку останова в viewDidLoad
VADetailViewController и обнаружил, что переменная item
по-прежнему является адресом подстановочного указателя, даже если присваивание имело место.
@interface VADetailViewController : UIViewController
// data
@property (nonatomic, retain) VAItem *item;
@end
пункт также правильно синтезирован.
Любая помощь очень ценится
Leo