2015-05-29 3 views
0

Я бы хотел включить мою кнопку для segue, если выбрана минимальная одна строка в tableView. Также кнопка должна быть отключена, если ни одна строка не выбрана/отмечена.Включить/отключить кнопку при прослушивании строки

На данный момент у меня есть этот код и Im только в состоянии включить его, но я не могу вывести его из строя больше:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    var whatIsSelected: String = "" 

    // Get Cell Label 
    let indexPath = tableView.indexPathForSelectedRow() 
    let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell! 

    whatIsSelected = currentCell.textLabel!.text! 

    // Unmark selected 
    if (currentCell.accessoryType == UITableViewCellAccessoryType.Checkmark) { 
     currentCell.accessoryType = UITableViewCellAccessoryType.None 
    // Mark selected category 
    } else { 
     currentCell.accessoryType = UITableViewCellAccessoryType.Checkmark 
    }` 

ответ

1

UPDATE:

Заменены мой ответ. Это рабочий прототип ViewController:

import UIKit 

class ViewController: UITableViewController { 

    @IBOutlet weak var testButton: UIButton! 
    let testData = ["One", "Two", "Three", "Four", "Thirty two :)"] 

    override func viewDidLoad() { 
    tableView.allowsMultipleSelection = true 
    testButton.enabled = false 
    } 

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let currentCell = tableView.cellForRowAtIndexPath(indexPath) as UITableViewCell! 
    currentCell.accessoryType = UITableViewCellAccessoryType.Checkmark 
    testButton.enabled = true 
    } 

    override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { 
    let currentCell = tableView.cellForRowAtIndexPath(indexPath) as UITableViewCell! 
    currentCell.accessoryType = UITableViewCellAccessoryType.None 
    let selectedRows = tableView.indexPathsForSelectedRows() as? [NSIndexPath] 
    if selectedRows == nil { 
     testButton.enabled = false 
    } 
    } 

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

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let data = testData[indexPath.row] 
    let cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "CELL") 
    cell.textLabel?.text = data 
    return cell 
    } 
} 
+0

То, что я не получаю 100%: когда я теперь маркировать две строки и пометку одну из строк, он отключит меня кнопку InstEd, чтобы кнопка активна, пока я не используйте функцию последняя строка ... – reto

+0

Я мог бы быть логическим и визуальным? Вы разрешаете множественный выбор? 'allowMultipleSelection' в коде или раскадровке? –

+0

В конце я пытаюсь сохранить выбранные строки в plist и загрузить их после того, как пользователь выполнил один раз «начальную настройку». Я начинаю быстро и на данный момент я ничего не знаю о multipleSection. То, что я сейчас пробовал, это: я объявил глобальный countRows как Int и подсчитал, что они фиксируют время, на которое записана строка (увеличение), и каждый раз записывается на ленту для отмены (уменьшения) и деактивации кнопки, когда countRows равно 0. Это работает до сих пор. Что вы думаете об этом решении? – reto

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