Вот то, что я так далеко:Если заявление основано на какой-либо предыдущий контроллер представления был
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (preivousViewController isEqualToString:@"...")
{
if ([self.filteredArray count] == 0)
self.person = self.users[indexPath.row];
else
self.person = self.filteredArray[indexPath.row];
self.mugshot = cell.imageView.image;
[self performSegueWithIdentifier:@"SelectPerson" sender:self];
} else {
if ([self.filteredArray count] == 0)
self.person = self.users[indexPath.row];
else
self.person = self.filteredArray[indexPath.row];
self.mugshot = cell.imageView.image;
[self performSegueWithIdentifier:@"selectVisitee" sender:self];
}
}
Это выглядит неаккуратно, поэтому им пытаются исправить это (что previousViewController
часть только что сделал, чтобы показать вы, что я хочу попробовать).
Что я пытаюсь сказать: если вы получили это представление через этот сеанс или с этого контроллера вида с именем suchandsuch
, тогда заготовьте этот сеанс или этот сегмент. Есть ли способ, которым я могу это сделать?
вы не должны использовать имя предыдущего контроллера представления. контроллер, запускающий segue этому контроллеру, должен установить флаг (возможно, перечисление), чтобы указать, какой тип «редактирования» вы делаете, а затем вы должны использовать это, чтобы решить, что делать. ваш другой код также идентичен в каждой ветке, если это необходимо сделать до if ... – Wain
Вы можете удалить дублирование кода, так как первые 5 строк в обеих ветвях точно совпадают. Просто переместите эту часть перед фактическим if-блоком. – luk2302
Могу ли я использовать предыдущий сеанс, чтобы добраться до этого вида, чтобы определить, какой из следующих вариантов использовать? –