Я хочу, чтобы удаление удалялось только для случая: 0, а не случая: 1 - сегментированное управление - PullRequest
0 голосов
/ 13 октября 2018

В моем приложении у меня есть свайп для удаления в моем сегментированном элементе управления, и он работает, показывая два разных просмотра таблиц, но я только хочу иметь свайп для удаления, чтобы работать в моем случае 0, а не в моем случае 1 (потому что случай1 содержит данные других пользователей, которые не может удалить текущий пользователь.

Как я могу это сделать?

Это мой список для удаления и отчет с кодом:

@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {

    let delete = UIContextualAction(style: .destructive, title: "Delete") { (action, view, nil) in
        Database.database().reference().child("messages").child(self.currentUserID!).child(self.message[indexPath.row].messageID).setValue([])                
    }

    let report = UIContextualAction(style: .destructive, title: "Report") { (action, view, nil) in

        let areUSureAlert = UIAlertController(title: "Are you sure you want to report?", message: "This will block this user from message you.", preferredStyle: UIAlertControllerStyle.alert)  
        areUSureAlert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action: UIAlertAction!) in

            Database.database().reference().child("messages").child(self.currentUserID!).child(self.message[indexPath.row].messageID).setValue([])

            let blockedPost = ["timestamp" : [".sv" : "timestamp"]]
            Database.database().reference().child("blocked").child(self.currentUserID!).child(self.message[indexPath.row].fromID).setValue(blockedPost)
        }))

        areUSureAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (action: UIAlertAction!) in
            //dismiss(animated: true, completion: nil)
        }))

        self.present(areUSureAlert, animated: true, completion: nil)
     }
    report.backgroundColor = #colorLiteral(red: 0.9529411793, green: 0.8918681279, blue: 0, alpha: 1)

    return UISwipeActionsConfiguration(actions: [delete, report])
}

Я пытался позвонить

switch(mySegmentedControl.selectedSegmentIndex) {

    case 0:

    //do all the report and swipe in here

    case 1:

        break


    default:
        break
    }

Но я думаю, что я делаю это неправильно .. У кого-нибудь есть идея?

1 Ответ

0 голосов
/ 13 октября 2018

Действия смахивания создаются динамически, поэтому отметьте selectedSegmentIndex в trailingSwipeActionsConfigurationForRowAt.Если индекс не равен 0 nil, это означает, что никакие действия не отображаются.

func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {

    guard mySegmentedControl.selectedSegmentIndex == 0 else { return nil }

    let delete = ...
...