У меня есть простой UITableView
с одним разделом и несколькими строками. Когда пользователь нажимает кнопку сотового аксессуара (которая связана с detailsSegue
), я хочу знать, что это за ячейка. Поэтому, чтобы выбрать правильный объект из моего массива и назначить его переменной из следующего представления.
Я использовал метод delegate tableview:accessoryButtonTappedForRowWithIndexPath:
и присвоил значение indexPath моей частной собственности myRow
. Вместо метода prepareForSegue:sender:
я использовал значение self.myRow.row
для выбора правильного объекта из массива.
Моя проблема в том, что эти два метода, похоже, выполняются в неправильном порядке. Из NSLog я вижу, что метод prepareForSegue:sender:
выполняется первым, и мой метод делегата меняет значение self.myRow
после него.
Так что prepareForSegue:sender:
метод всегда передает неправильный объект в следующий вид (тот, который был использован ранее).
Извините за моих английских парней. Благодарим вас за помощь.
-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
self.myRow = indexPath;
NSLog(@"tapped button at row: %i",self.myRow.row);
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([segue.identifier isEqualToString:@"addSegue"]) {
AddViewController *avc = segue.destinationViewController;
avc.delegate = self;
}
else if ([segue.identifier isEqualToString:@"detailsSegue"]) {
NSLog(@"Segue row: %i",self.myRow.row);
Annotation *annotation = [self.viewsList objectAtIndex:self.myRow.row];
NSLog(@"Segue annotation object: %@",annotation.title);
DetailsViewController *dvc = segue.destinationViewController;
dvc.wikiKey = annotation.title;
}
}