Ios swift中的tableview.reloaddata()序列错误

Ios swift中的tableview.reloaddata()序列错误,ios,swift,uitableview,cells,Ios,Swift,Uitableview,Cells,我正在为“清单”创建者编写代码。应用程序中有几个部分。一个是从头开始创建一个新的清单。根据用户的选择,一行清单将有一个复选框、输入字段或是/否开关。我使用Parse设置了所有这些,但有一个问题 当我点击一个按钮,一个新行被添加,我可以在这里输入一些日期。 然后我可以再次点击相同的按钮,同样的事情也会发生 但是,当我添加第五行时,第五行将成为当前第一行,而第一行现在是空的。我在下面添加了代码。由于所有不同的变量,退出时间很长,但我认为最重要的是 “添加”iAction和配置表视图的部分。有人能帮我

我正在为“清单”创建者编写代码。应用程序中有几个部分。一个是从头开始创建一个新的清单。根据用户的选择,一行清单将有一个复选框、输入字段或是/否开关。我使用Parse设置了所有这些,但有一个问题

当我点击一个按钮,一个新行被添加,我可以在这里输入一些日期。 然后我可以再次点击相同的按钮,同样的事情也会发生

但是,当我添加第五行时,第五行将成为当前第一行,而第一行现在是空的。我在下面添加了代码。由于所有不同的变量,退出时间很长,但我认为最重要的是 “添加”iAction和配置表视图的部分。有人能帮我解决问题吗

谢谢, 斯文

导入UIKit
导入解析
进口基金会
var emptyone=true
类主屏幕:UITableViewController、UITextFieldDelegate{
var topField=[“”]
var first=Bool()
变量label1=[“”]
变量switchEnab=[false]
var fieldEnab=[false]
var yesnoEnab=[false]
var TopSegmentEnable=[错误]
var topFieldEnab=[false]
var segmentName0=[“”]
var segmentName1=[“”]
var segmentName2=[“”]
var messageEnab=[false]
var message1=[“”]
var labelEnab=[false]
变量字段1=[“”]
变量开关1=[错误]
var上分段=[1]
var yesno1=[1]
var nummer=Int()
//添加新行
@iAction func add(发送方:任意对象){
第一个=正确
self.label1.append(“”作为字符串!)
self.topField.append(“”作为字符串!)
self.segmentName0.append(“”作为字符串!)
self.segmentName1.append(“”作为字符串!)
self.segmentName2.append(“”作为字符串!)
self.message1.append(“”作为字符串!)
self.field1.append(“”作为字符串!)
self.switchEnab.append(false)
self.fieldEnab.append(false)
self.topFieldEnab.append(false)
self.yesnoEnab.append(false)
self.topSegmentEnab.append(false)
self.messageEnab.append(false)
self.labelEnab.append(false)
self.switch1.append(false)
self.yesno1.append(1)
自上分段附加(1)
self.tableView.reloadData()
}
@IBOutlet var Celopmak:UITableView!
//函数初始化器
var activityIndicator:UIActivityIndicatorView=UIActivityIndicatorView()
func busy(){
activityIndicator=UIActivityIndicatorView(框架:CGRectMake(0,0,50,50))
activityIndicator.center=self.view.center
activityIndicator.hidesWhenStopped=true
activityIndicator.activityIndicatorViewStyle=UIActivityIndicatorViewStyle.Gray
view.addSubview(活动指示器)
activityIndicator.startAnimating()
UIApplication.sharedApplication().beginIgnoringInteractionEvents()
}
func displayAlert(标题:字符串,消息:字符串){
let alert=UIAlertController(标题:标题,消息:消息,首选样式:UIAlertControllerStyle.alert)
addAction(UIAlertAction)(标题:“确定”,样式:。默认,处理程序:{(操作)在
}))
self.presentViewController(警报、动画:true、完成:nil)
}
//检查表的最终保存
@iAction func saveButton(发件人:AnyObject){
如果last==true{
dispatch\u async(dispatch\u get\u main\u queue()){
self.first=false
self.tableView.reloadData()
}
忙碌的
让newValues=PFObject(类名:“clTypes”)
新值[“任务名称”]=“”
newValues[“dateStamp”]=“-”
newValues[“TopSegmentEnable”]=self.TopSegmentEnable
newValues[“segmentName0”]=self.segmentName0
newValues[“segmentName1”]=self.segmentName1
newValues[“segmentName2”]=self.segmentName2
newValues[“topFieldEnab”]=self.topFieldEnab
newValues[“topField”]=self.topField
newValues[“label1”]=self.label1
newValues[“label1Enab”]=self.labelEnab
newValues[“fieldEnab”]=self.fieldEnab
newValues[“field1”]=self.field1
newValues[“switchEnab”]=self.switchEnab
newValues[“switch1”]=self.switch1
newValues[“yesnoEnab”]=self.yesnoEnab
newValues[“yesno1”]=self.yesno1
newValues[“topSegment”]=self.topSegment
newValues[“messageEnab”]=self.messageEnab
newValues[“message1”]=self.message1
新值[“clType”]=clType1
newValues[“checklistTitle”]=checklistTitle1
newValues.saveInBackground()
self.activityIndicator.stopAnimating()
UIApplication.sharedApplication().endIgnoringInteractionEvents()
displayAlert(“清单已保存”,消息:“清单已成功保存到服务器”)
self.dismissViewControllerAnimated(真,完成:无)
self.tableView.reloadData()
self.performsguewithidentifier(“概述”,发件人:self)
}否则{
displayAlert(“无最终按钮”,信息:“请在清单中添加“最后一个”单元格”)
}
}
//VIEWDIDLOAD
重写func viewDidLoad(){
super.viewDidLoad()
self.label1.removeAll(keepCapacity:true)
self.field1.removeAll(keepCapacity:true)
self.message1.removeAll(keepCapacity:true)
self.topField.removeAll(keepCapacity:true)
self.segmentName0.removeAll(keepCapacity:true)
self.segmentName1.removeAll(keepCapacity:true)
self.segmentName2.removeAll(keepCapacity:true)
self.switchEnab.removeAll(keepCapacity:true)
self.yesnoEnab.removeAll(keepCapacity:true)
self.topFieldEnab.removeAll(keepCapacity:true)
self.fieldEnab.removeAll(keepCapacity:true)
self.messageEnab.removeAll(keepCapacity:true)
self.labelEnab.removeAll(keepCapacity:true)
self.switch1.removeAll(keepCapacity:true)
self.topSegmentEnab.removeAll(keepCapacity:true)
self.yesno1.removeAll(keepCapacity:true)
self.topSegment.removeAll(保持容量:true)
last=false
//var helloWorldTimer=NSTimer.scheduledTimerWithTimeInterval(5.0,目标:self,选择器:选择器(“sayHello”),userInfo:nil,重复
import UIKit
import Parse
import Foundation

var emptyone = true
class Homescreen: UITableViewController, UITextFieldDelegate {
var topField = [""]
var first = Bool()
var label1 = [""]
var switchEnab = [false]
var fieldEnab = [false]
var yesnoEnab = [false]
var topSegmentEnab = [false]
var topFieldEnab = [false]
var segmentName0 = [""]
var segmentName1 = [""]
var segmentName2 = [""]
var messageEnab = [false]
var message1 = [""]
var labelEnab = [false]
var field1 = [""]
var switch1 = [false]
var topSegment = [1]
var yesno1 = [1]
var nummer = Int()



// Add a new row
@IBAction func add(sender: AnyObject) {

    first = true



    self.label1.append("" as String!)
    self.topField.append("" as String!)
    self.segmentName0.append("" as String!)
    self.segmentName1.append("" as String!)
    self.segmentName2.append("" as String!)
    self.message1.append("" as String!)
    self.field1.append("" as String!)
    self.switchEnab.append(false)
    self.fieldEnab.append(false)
    self.topFieldEnab.append(false)
    self.yesnoEnab.append(false)
    self.topSegmentEnab.append(false)
    self.messageEnab.append(false)
    self.labelEnab.append(false)
    self.switch1.append(false)
    self.yesno1.append(1)
    self.topSegment.append(1)

    self.tableView.reloadData()


}


@IBOutlet var celOpmaak: UITableView!


// Function initators
var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
func busy(){
    activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 50, 50))
    activityIndicator.center = self.view.center
    activityIndicator.hidesWhenStopped = true
    activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
    view.addSubview(activityIndicator)
    activityIndicator.startAnimating()
    UIApplication.sharedApplication().beginIgnoringInteractionEvents()
}

func displayAlert(title: String, message: String){
    let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)
    alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: { (action) in

    }))

    self.presentViewController(alert, animated: true, completion: nil)
}


// Final save of the checklist
@IBAction func saveButton(sender: AnyObject) {
    if last == true{

    dispatch_async(dispatch_get_main_queue()) {
        self.first = false
        self.tableView.reloadData()
    }



            busy()

        let newValues = PFObject(className: "clTypes")


        newValues["taskName"] = ""
        newValues["dateStamp"] = "  -  -  "
        newValues["topSegmentEnab"] = self.topSegmentEnab
        newValues["segmentName0"] = self.segmentName0
        newValues["segmentName1"] = self.segmentName1
        newValues["segmentName2"] = self.segmentName2
        newValues["topFieldEnab"] = self.topFieldEnab
        newValues["topField"] = self.topField
        newValues["label1"] = self.label1
        newValues["label1Enab"] = self.labelEnab
        newValues["fieldEnab"] = self.fieldEnab
        newValues["field1"] = self.field1
        newValues["switchEnab"] = self.switchEnab
        newValues["switch1"] = self.switch1
        newValues["yesnoEnab"] = self.yesnoEnab
        newValues["yesno1"] = self.yesno1
        newValues["topSegment"] = self.topSegment
        newValues["messageEnab"] = self.messageEnab
        newValues["message1"] = self.message1
        newValues["clType"] = clType1
        newValues["checklistTitle"] = checklistTitle1
        newValues.saveInBackground()
        self.activityIndicator.stopAnimating()
        UIApplication.sharedApplication().endIgnoringInteractionEvents()
        self.displayAlert("Checklist saved", message: "The checklist has been saved to the server succesfully")
        self.dismissViewControllerAnimated(true, completion: nil)
        self.tableView.reloadData()
        self.performSegueWithIdentifier("overview", sender: self)


    }else{
        displayAlert("No final button", message: "Please add a 'last' cell to the checklist")

    }
}



// VIEWDIDLOAD
override func viewDidLoad() {
    super.viewDidLoad()

    self.label1.removeAll(keepCapacity: true)
    self.field1.removeAll(keepCapacity: true)
    self.message1.removeAll(keepCapacity: true)
    self.topField.removeAll(keepCapacity: true)
    self.segmentName0.removeAll(keepCapacity: true)
    self.segmentName1.removeAll(keepCapacity: true)
    self.segmentName2.removeAll(keepCapacity: true)
    self.switchEnab.removeAll(keepCapacity: true)
    self.yesnoEnab.removeAll(keepCapacity: true)
    self.topFieldEnab.removeAll(keepCapacity: true)
    self.fieldEnab.removeAll(keepCapacity: true)
    self.messageEnab.removeAll(keepCapacity: true)
    self.labelEnab.removeAll(keepCapacity: true)
    self.switch1.removeAll(keepCapacity: true)
    self.topSegmentEnab.removeAll(keepCapacity: true)
    self.yesno1.removeAll(keepCapacity: true)
    self.topSegment.removeAll(keepCapacity: true)
   last = false
    //var helloWorldTimer = NSTimer.scheduledTimerWithTimeInterval(5.0, target: self, selector: Selector("sayHello"), userInfo: nil, repeats: true)


    toeVoegen.wraps = false
    toeVoegen.autorepeat = false
    toeVoegen.maximumValue = 80
    self.tableView.reloadData()


    // Uncomment the following line to preserve selection between presentations
    // self.clearsSelectionOnViewWillAppear = false

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    self.navigationItem.rightBarButtonItem = self.editButtonItem()
}


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

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return label1.count
}


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
     var cell: UITableViewCell! = tableView.dequeueReusableCellWithIdentifier("cel", forIndexPath: indexPath) as! creatorCellTableViewCell
    if cell == nil{
        print("hoi")
        let cell = tableView.dequeueReusableCellWithIdentifier("cel", forIndexPath: indexPath) as! creatorCellTableViewCell

    if first == true{
    cell.option1.delegate = self
    func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
            self.view.endEditing(true)
        }

        print(self.label1)
        print(Int(toeVoegen.value))
    label1[indexPath.row] = cell.labelField.text!
}else{

// This part is only called when the 'final save button' has been activated

label1[indexPath.row] = cell.labelField.text!
field1[indexPath.row] = ""
yesno1[indexPath.row] = 1
topField[indexPath.row] = ""
        // switchEnab, fieldEnab, yesnoEnab
    if cell.degreeField.selectedSegmentIndex == 1{

        labelEnab[indexPath.row]=false
        topFieldEnab[indexPath.row]=true
        topSegmentEnab[indexPath.row]=true
        segmentName0[indexPath.row] = ""
        segmentName1[indexPath.row] = ""
        segmentName2[indexPath.row] = ""

        if cell.typeField.selectedSegmentIndex == 0{

        switchEnab[indexPath.row] = false
        fieldEnab[indexPath.row] = true
        yesnoEnab[indexPath.row] = true
        messageEnab[indexPath.row]=false
        message1[indexPath.row]=cell.messageField.text!
        }else if cell.typeField.selectedSegmentIndex == 1{

        switchEnab[indexPath.row] = true
        fieldEnab[indexPath.row] = true
        yesnoEnab[indexPath.row] = false
            if cell.messageSwitch.on == true{
            messageEnab[indexPath.row]=cell.messageSwitch.on
            message1[indexPath.row]=cell.messageField.text!
            }else{
            messageEnab[indexPath.row]=false
            message1[indexPath.row]="hallo"
            }
        }else if cell.typeField.selectedSegmentIndex == 2{

        labelEnab[indexPath.row]=false
        switchEnab[indexPath.row] = true
        fieldEnab[indexPath.row] = false
        yesnoEnab[indexPath.row] = true
        messageEnab[indexPath.row]=false
        message1[indexPath.row]=""
        }


    }else if cell.degreeField.selectedSegmentIndex == 0{

        switchEnab[indexPath.row]=true
        fieldEnab[indexPath.row]=true
        yesnoEnab[indexPath.row]=true
        labelEnab[indexPath.row]=true
        messageEnab[indexPath.row]=false
        message1[indexPath.row]=""
            if cell.topVeld.selectedSegmentIndex == 0{

        topSegmentEnab[indexPath.row] = false
        topFieldEnab[indexPath.row] = true


        segmentName0[indexPath.row] = cell.option1.text!
        segmentName1[indexPath.row] = cell.option2.text!
        segmentName2[indexPath.row] = cell.option3.text!
            } else{

                topSegmentEnab[indexPath.row]=true
                topFieldEnab[indexPath.row]=false
            }
    }

    }
}
    return cell
        }
let cell = tableView.dequeueReusableCellWithIdentifier("cel",
   forIndexPath: indexPath) as! creatorCellTableViewCell
let cell = tableView.dequeueReusableCellWithIdentifier("cel",
   forIndexPath: indexPath) as! creatorCellTableViewCell

cell.labelField.text! = label1[indexPath.row]
// do this for every field that needs to be set