2017-01-18 2 views
-1

У меня есть действия в строке и вы хотите, чтобы пользователь мог их щелкнуть, а затем перейти к новому VC вместе с информацией для объекта в ячейке indexpath. Это мой текущий код:Segue от действия ряда?

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { 
    let update = UITableViewRowAction(style: .normal, title: "Update") { (action, indexPath) in 
     let cell = tableView.cellForRow(at: indexPath) 
     self.performSegue(withIdentifier: "XXXXXX", sender: cell) 
    } 
    update.backgroundColor = UIColor.blue 
    return [update] 
} 

Моя идея состояла в том, что я могу установить ячейку как indexpath действие ряд находится на, а затем непосредственно перейти к ВК я хочу.

Проблема, очевидно, вы не можете нарисовать segue в IB из действия строки, так как я должен создать это? Я знаю, что могу сделать так, чтобы пользователь мог выбрать строку ячейки, которую нужно отделить, но я хочу, чтобы она была конкретно на действии строки, а не на самой ячейке.

Я ценю любую помощь в том, как это достигается!

редактировать: предложить, как это Q отличается от предлагаемой, я не в состоянии создать SEGUE в раскадровку для действия ряда, чтобы иметь возможность ссылаться на него

+0

Возможная Дубликат [IOS - Как программно с помощью непосредственно перейти быстры] (http://stackoverflow.com/questions/27604192/ios-how-to-segue-programatically-use-swift) – xoudini

+0

Я прочитал, что перед отправкой ответа этот ответ по-прежнему использует идентификатор сегрегации, чтобы показать, что вы не можете создать это в первую очередь для действия в строке? – jwarris91

+0

Вы можете создать его из ViewController, где принадлежит tableView (и ячейки), к следующему. Затем назовите его. – Larme

ответ

0

Решено Как прокомментировал вы можете создать SEGUE в IB на уровне VC, а не на действия в строке, а затем присваивать этот идентификатор segues действиям строки, используя performSegue(withIdentifier:sender:), как было предложено в моем вопросе.

0

Создать SEGUE из текущего ViewController к месту назначения ViewController и дать некоторые Segue идентификатор позволяет сказать «AbcVCto» А в вашем didSelectRowAtIndexPath- вызываете этот метод.

cell.tag = indexPath.row; 
[self performSegueWithIdentifier:"AbcVCTo" sender:cell]; 

Вышеуказанный метод должен быть подготовлен к segue и использовать его так.

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if ([segue.identifier isEqualToString:@"AbcVCto"]) { 
     UITableViewCell *cell = (UITableViewCell *)sender; 
     //You can fetch data from array with your cell row number with cell.tag number 
     //e.g 
     segue.destinationViewController.selectedCellName = [arrayOfCellNames objectAtIndex:cell.tag]; 
    } 
} 

Над Узор в Swift 3

cell.tag = indexPath.row 
self.performSegue(WithIdentifier:"AbcVCTo", sender:cell); 

override func prepare(for Segue: UIStoryboardSegue, sender: Any?) { 
if forSegue.identifier == "ABCVCTo" { 
     guard let cell = sender as? UITableViewCell else { 
      return 
     } 
     //now your cell.tag is the selected cell indexNumber 
} 

}

Смежные вопросы