Aktivieren / Deaktivieren Sie das Kontrollkästchen, indem Sie in der Tabellenansicht auf die Zelle tippen, und erfahren Sie, welche Zelle aktiviert oder deaktiviert ist.
Ich bin neu in iOS Swift 2.2. Ich habe versucht, eine Tabellenansicht mit der benutzerdefinierten Zelle xib zu erstellen. und ich fülle einige Daten in meiner Tabellenansicht auf. Außerdem habe ich ein benutzerdefiniertes Kontrollkästchen hinzugefügt. Und ich erstelle eine separate Klasse für dieses Kontrollkästchen. Jetzt, wenn ich nur auf meine Schaltfläche in meiner customcell.xib klicke. Aber wenn ich auf meine Zelle tippe, ändert sich mein Kontrollkästchen nicht. Ich muss beides haben. Wenn ich auf meine Schaltfläche klicke, sollte sich das Bild ändern, um es zu aktivieren oder zu deaktivieren. Wenn ich auf mein Handy tippe, muss ich auch meine Schaltfläche ändern, um das Bild zu aktivieren oder zu deaktivieren.
Und wenn ich nach unten scrolle und wieder nach oben komme, werden meine markierten Bilder automatisch in ein normales Kontrollkästchen umgewandelt.
Ich muss etwas tun, also dafür. Wenn ich auf eine Zelle tippe, sollte das Kontrollkästchen aktiviert und deaktiviert sein. Außerdem muss ich wissen, welche Zeilenzelle das Bild überprüft hat. Damit ich eine Aktion nur für meine markierte Bildzeilenzelle ausführen kann.
hier ist meine benutzerdefinierte Kontrollkästchen-Klasse:
import UIKit
class CheckBoxButton: UIButton {
// Images
let checkedImage = UIImage(named: "CheckBoxChecked")! as UIImage
let uncheckedImage = UIImage(named: "CheckBoxUnChecked")! as UIImage
// 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: #selector(CheckBoxButton.buttonClicked(_:)), forControlEvents: UIControlEvents.TouchUpInside)
self.isChecked = false
}
func buttonClicked(sender: UIButton) {
if sender == self {
if isChecked == true {
isChecked = false
} else {
isChecked = true
}
}
}
}
Cutom cell.xib Klasse:
import UIKit
class FavCell: UITableViewCell {
@IBOutlet weak var FLabel1: UILabel!
@IBOutlet weak var FLabel2: UILabel!
@IBOutlet weak var checkbox: CheckBoxButton!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
@IBAction func checkboxpress(sender: AnyObject) {
}
}
myviewcontroller.swift
import UIKit
class FavVC: UIViewController {
@IBOutlet weak var FavTableView: UITableView!
//var FData = [FavouritesData]()
var arrDict :NSMutableArray=[]
let cellSpacingHeight: CGFloat = 5 // cell spacing from each cell in table view
override func viewDidLoad() {
super.viewDidLoad()
self.jsonParsingFromURL()
let nib = UINib(nibName:"FavCell", bundle: nil)
FavTableView.registerNib(nib, forCellReuseIdentifier: "FCell")
}
// web services method
func jsonParsingFromURL ()
{
// let token = NSUserDefaults.standardUserDefaults().valueForKey("access_token") as? String
let url = NSURL(string: "som url")
let session = NSURLSession.sharedSession()
let request = NSURLRequest(URL: url!)
let dataTask = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
// print("done, error: \(error)")
if error == nil
{
dispatch_async(dispatch_get_main_queue())
{
self.arrDict=(try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as! NSMutableArray
if (self.arrDict.count>0)
{
self.FavTableView.reloadData()
}
}
}
}
dataTask.resume()
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int
{
// return self.FData.count
return self.arrDict.count
}
// number of rows
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return 1
}
// height for each cell
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
{
return cellSpacingHeight
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell:FavCell = self.FavTableView.dequeueReusableCellWithIdentifier("FCell") as! FavCell
cell.FLabel1.text=arrDict[indexPath.section] .valueForKey("favourite_name") as? String
cell.FLabel2.text=arrDict[indexPath.section] .valueForKey("favourite_address") as? String
return cell
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
bitte hilf mir
Danke im Vorau