2016-09-20 2 views
-1

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

Буду признателен, если кто-нибудь может дать мне подсказку, я застрял здесь, для меня достаточно намека!

Заранее спасибо.

Мой код внизу:

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { 
    let moveAction = UITableViewRowAction(style: .Default, title: "Move") { (action, indexPath) in 
    let moveMenu = UIAlertController(title: nil, message: "Move to", preferredStyle: .ActionSheet) 

     // I need to write two handler to handle the movements 
     let cancelationAction = UIAlertAction(title: "Move to Cancelation List", style: .Default, handler: moveToCancelation) 
     let achievementAction = UIAlertAction(title: "Move to Achievement List", style: .Default, handler: moveToAchievement) 
     let cancel = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil) 
     moveMenu.addAction(cancelationAction) 
     moveMenu.addAction(achievementAction) 
     moveMenu.addAction(cancel) 
     self.presentViewController(moveMenu, animated: true, completion: nil) 
    } 

    let deleteAction = UITableViewRowAction(style: .Default, title: "Delete") { (action, indexPath) in 
     // delete items from data source 
     self.wishList.removeAtIndex(indexPath.row) 
     self.saveWishList() 
     self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
    } 

    moveAction.backgroundColor = UIColor.lightGrayColor() 
    deleteAction.backgroundColor = UIColor.redColor() 

    return [moveAction, deleteAction] 
} 

ответ

0

Прошла неделя, и я реализовал то, что хотел. Дело в том, что да, нам нужно segue, и до этого я просто подумал, что могу только сделать segue от реальной кнопки или чего-то другого, но на самом деле я могу сделать segue с контроллера вида на другой контроллер представления без указания того, какой элемент активирует сеанс. Так вот что я делаю: сделать segue между двумя контроллерами представления, а затем назвать segue, обработчик записи выше, а затем выполнить segue с определенным идентификатором. Надеюсь, это поможет любому, кто к этому относится.

Мой новый код downblow:

// Implementing the delete and move to function 
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { 
    let moveAction = UITableViewRowAction(style: .Default, title: "Move") { (action, indexPath) in 
    let moveMenu = UIAlertController(title: nil, message: "Move to", preferredStyle: .ActionSheet) 

     // I need to write two handler to handle the movements 
     let cancelationAction = UIAlertAction(title: "Move to Cancelation List", style: .Default, handler: { 
      (action: UIAlertAction) in 
     self.performSegueWithIdentifier("MoveToCancelationList", sender: tableView.cellForRowAtIndexPath(indexPath)) 
     }) 
     let achievementAction = UIAlertAction(title: "Move to Achievement List", style: .Default, handler: { 
      (action: UIAlertAction) in 
      self.performSegueWithIdentifier("MoveToAchievementList", sender: tableView.cellForRowAtIndexPath(indexPath)) 
     }) 
     let cancel = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil) 
     moveMenu.addAction(cancelationAction) 
     moveMenu.addAction(achievementAction) 
     moveMenu.addAction(cancel) 
     self.presentViewController(moveMenu, animated: true, completion: nil) 
    } 

    let deleteAction = UITableViewRowAction(style: .Default, title: "Delete") { (action, indexPath) in 
     // delete items from data source 
     self.wishListBand.removeAtIndex(indexPath.row) 
     self.saveWishListBand() 
     self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
    } 

    moveAction.backgroundColor = UIColor.lightGrayColor() 
    deleteAction.backgroundColor = UIColor.redColor() 

    return [moveAction, deleteAction] 
} 
2

Другие ответы обсудить это с точки зрения перетекает, потому что это вообще проще всего использовать раскадровки, чтобы показать взаимодействие между сценами, и перетекает инкапсулировать эти взаимодействия. Если вы делаете все это в коде, как показывает ваш пример, то segues бессмысленны. Вместо этого вы можете просто настроить свойства на контроллере представления назначения вручную.

+0

Вы правы, может быть, я делаю вещи более сложными. Тогда я попытаюсь использовать segue. Благодарю! –

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