swift - как выбрать несколько строк в табличном представлении без перехода

Моя среда разработки - swift3, xcode8. Я делаю список приложений, как приложение для сообщений Apple. Когда я выбираю список в табличном представлении, я перехожу на страницу сведений (через сегмент), и теперь я хочу реализовать несколько функций удаления.

Но есть проблема. Когда я редактирую режим, я вижу окно выбора. Но если я выберу это окно выбора, просто перейдите на страницу сведений.

Может быть, прежде чем перейти на страницу с подробностями через Seg, я думаю, что я должен сделать несколько вариантов. Что я должен делать?

2 ответа

Убедитесь, что вы соответствуете что-то вроде кода ниже;

class TableviewController:UITableViewController{
override func viewDidLoad() {
    super.viewDidLoad()
    var isMultipleSelectionActive = false
    var selectedItems: [String: Bool] = [:]
    tableView.allowsMultipleSelectionDuringEditing = true
    tableView.setEditing(true, animated: false)
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
    cell.textLabel?.text = "\(indexPath.row)"
    return cell
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 10
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let selectedItem = items.objectAtIndex(indexPath.row)
    //add to selectedItems
    selectedItems[selectedItem] = true
}

func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
    let selectedItem = items.objectAtIndex(indexPath.row)
    // remove from selectedItems
    selectedItems[selectedItem] = nil
}

func getStatusOfSelectedItems() {
    for item in selectedItems {
        println(item)
    }
}

//You should override shouldPerformSegueWithIdentifier and return false if isMultipleSelectionActive is true

override func shouldPerformSegue(withIdentifier identifier: String?, sender: Any?) -> Bool {
    if let identifierName = identifier {
        if identifierName == "NameOfYourSegueIdentifier" {
             if isMultipleSelectionActive {
                  return false
             }
        }
    }
    return true
}
}

Этот код используется для выбора нескольких строк

class TableViewController: UITableViewController
{
    var lastSelectedIndexPath = NSIndexPath(forRow: -1, inSection: 0)

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) 

        // Configure the cell...
        cell.textLabel!.text = "row: \(indexPath.row)"

        if cell.selected
        {
            cell.selected = false
            if cell.accessoryType == UITableViewCellAccessoryType.None
            {
                cell.accessoryType = UITableViewCellAccessoryType.Checkmark
            }
            else
            {
                cell.accessoryType = UITableViewCellAccessoryType.None
            }
        }

        return cell
    }

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
    {
        let cell = tableView.cellForRowAtIndexPath(indexPath)

        if cell!.selected
        {
            cell!.selected = false
            if cell!.accessoryType == UITableViewCellAccessoryType.None
            {
                cell!.accessoryType = UITableViewCellAccessoryType.Checkmark
            }
            else
            {
                cell!.accessoryType = UITableViewCellAccessoryType.None
            }
        }
    }
Другие вопросы по тегам