2014-11-29 3 views
0

Я очень новичок в этом и уже несколько недель борется за решение выбрать несколько элементов из списка. Если выбрано изображение слева, оно выбирает линию и изменяет изображение на «выбранное» изображение. Если пользователь нажмет на «i», он перейдет к подробному экрану. Я снял второй экран, чтобы показать, чего я пытаюсь достичь ... Как только соответствующие элементы будут выбраны, у меня будет кнопка отправки, чтобы отправить эти элементы в список где-то ... Я полагаю, что мне нужно будет используйте allowMultipleSelection где-то, а затем сохраняйте выделение в массиве и не позволяйте segue на экране подробностей, если «i» не выбрано.Swift - множественный выбор из списка с изменением изображения

Вот скриншоты того, что я пытаюсь достичь - ScreenSamples

Это код, который я использовал, чтобы получить первый невыбранный список ... в классе ViewController: UIViewController, UITableViewDataSource.

let repeatList = [("Item 1", "Sub 1"), 
    ("Item 2", "Sub 2"), 
    ("Item 3", "Sub 3"), 
    ("Item 4", "Sub 4"), 
    ("Item 5", "Sub 5")] 

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell 
    let (repeatProduct, repeatCount) = repeatList[indexPath.row] 

    cell.textLabel.text = repeatProduct 
    cell.detailTextLabel?.text = repeatCount 

     //retrieve an image 
    var repeatSelectorImage = UIImage(named: "checkedIcon") 
    cell.imageView.image = repeatSelectorImage 

     return cell 
} 

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
     return "Repeatable Items" 
} 


override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 
+0

Я пришел правильно. Создал класс CheckButton, который переключил изображения при нажатии. –

ответ

0

Это то, что я и сделал.

import UIKit 

class CheckButton: UIButton { 

    //images 
    let checkedImage = UIImage(named: "checkedIcon") 
    let unCheckedImage = UIImage(named: "unCheckedIcon") 

    //bool property 
    var isChecked:Bool = false{ 
    didSet{ 
     if isChecked == true{ 
      self.setImage(checkedImage, forState: .Normal) 
     } else { 
      self.setImage(unCheckedImage, forState: .Normal) 
     } 
    } 
    } 

    override func awakeFromNib() { 
    self.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside) 
    self.isChecked = false 
    } 

    func buttonClicked(sender:UIButton!) { 
    if(sender == self) { 
     if isChecked == true { 
      isChecked = false 
     } else { 
      isChecked = true 
     } 
    } 
    } 
} 
+1

Пожалуйста, постарайтесь не отправлять ответы только на код. Пожалуйста, подробно расскажите о своем решении. – NathanOliver

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