2016-03-23 7 views
1

Ich habe eine Schaltersteuerung und der Code ist:Zelle ersetzt nicht, wenn ich eine beliebige Zelle in der Tabellenansicht tippen

@IBAction func TappedOnSwitch(SelectUserType: UISwitch) { 

     if SelectUserType.on{ 
      NSUserDefaults.standardUserDefaults().setBool(true, forKey: "PremiumUser") 
      print("swifth on") 


     } 
     else 
     { 

      NSUserDefaults.standardUserDefaults().setBool(false, forKey: "normalUser") 
      print("swifth off") 
     } 
    } 

Sein Druck gut, in meiner Konsole. Dann prüfe ich diesen Schalterzustand und ersetze die Zelle in meiner Tabellenansicht.

Aber es funktioniert nicht gut. Was ich brauche ist? wenn der Schalter ist auf i cell3 zeigen müssen, und wenn ich ich brauche ausschalten cell2 .Durch Standard cell Show Anzeige in der Tabellenansicht

hier zeigen ist mein Code:

let premiumUserCheck = NSUserDefaults.standardUserDefaults().boolForKey("PremiumUser") 

Überschreibung func viewDidLoad() {

super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    self.jsonParsingFromURL() 

    let nib = UINib(nibName:"customCell", bundle: nil) 

    tableView.registerNib(nib, forCellReuseIdentifier: "cell") 


    let nib1 = UINib(nibName:"Expandcell", bundle: nil) 

    tableView.registerNib(nib1, forCellReuseIdentifier: "cell2") 



    let nib2 = UINib(nibName:"premiumUsercell", bundle: nil) 

    tableView.registerNib(nib2, forCellReuseIdentifier: "cell3") 



} 

Aktualisiert Code:

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

    if(isTapped == true && indexPath == selectedIndex) 
    { 



     if (premiumUserCheck) { 

      let cell1:premiumUsercell = self.tableView.dequeueReusableCellWithIdentifier("cell3") as! premiumUsercell 


       cell1.vendorName3.text=arrDict[indexPath.section] .valueForKey("name") as? String 
      cell1.vendorAdddress3.text=arrDict[indexPath.section] .valueForKey("address") as? String 

      return cell1 


      print("premium user") 
     } 
     else { 

     let cell2:ExpandCell = self.tableView.dequeueReusableCellWithIdentifier("cell2") as! ExpandCell 


     cell2.VendorName.text=arrDict[indexPath.section] .valueForKey("name") as? String 
     cell2.vendorAdress.text=arrDict[indexPath.section] .valueForKey("address") as? String 
     cell2.externalView.hidden = true 

        print("non premium user") 
    return cell2 
     } 
    } 
    else { 



    let cell:customCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! customCell 


    cell.vendorName.text=arrDict[indexPath.section] .valueForKey("name") as? String 
    cell.vendorAddress.text=arrDict[indexPath.section] .valueForKey("address") as? String 

    return cell 
     print("norml user") 
    } 

} 

bitte helfen Sie mir, warum es nicht richtig ersetzt?

+0

Setzen Sie Ihre customCell Code in das sonst Block dies, wenn, wenn (isTapped == true && indexPath == selectedIndex) –

+0

leider din't Sie bekommen ?? – user5513630

+0

ja, ich lege das aber immer noch nicht ersetzen mit der richtigen Zelle – user5513630

Antwort

1

Versuchen Sie den Code ändern, wie unten,

if SelectUserType.on{ 

    NSUserDefaults.standardUserDefaults().setBool(true, forKey: "PremiumUser") 
    NSUserDefaults.standardUserDefaults().synchronize() 
    print("swifth on") 


} else { 

    //Here you were setting value for normalUser key instead of PremiumUser 
    NSUserDefaults.standardUserDefaults().setBool(false, forKey: "PremiumUser"/*"normalUser"*/) 
    NSUserDefaults.standardUserDefaults().synchronize() 
    print("swifth off") 
} 
+0

tatsächlich in meiner Tabelle anzeigen controller dont have switch, wenn app start ich habe einen view controller in diesem benutzer muss ein- und ausschalten, also danach müssen sie eine show-taste drücken, dann wird es umleiten zu einem anderen tableviewcontroller.In nur ich habe diese zelle code Wenn ich 'tableview reloadData' platziere, wird der Fehler angezeigt – user5513630

Verwandte Themen