简体   繁体   中英

Pros and Cons list Swift

I am trying to make a pros and cons list in swift using table views. I got the first list to work but when I added the second one it is just copying the first.

import UIKit

class prosConsViewController: UIViewController
{

@IBOutlet var tableViewOutlet: UITableView!

var colleges : [NetCollege] = []


@IBOutlet var consTableView: UITableView!
var collegesTwo : [NetCollegeTwo] = []


override func viewDidLoad()
{
    super.viewDidLoad()
    editButtonItem().tag = 0



}



@IBAction func onTappedPlusButton(sender: UIBarButtonItem)
{

    var alert = UIAlertController(title: "Add Pro", message: nil, preferredStyle: .Alert)
    alert.addTextFieldWithConfigurationHandler
        { (textField) -> Void in
        textField.placeholder = "Add Pro Here"
        }
    var cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)
    alert.addAction(cancelAction)


    var addAction = UIAlertAction(title: "Add", style: .Default) { (action) -> Void in
        var addCollegesTextField = alert.textFields?[0] as! UITextField

        var netCollege = NetCollege(name: addCollegesTextField.text)


        self.colleges.append(netCollege)
        self.tableViewOutlet.reloadData()
    }

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

}



func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell!
{
    let cell = tableViewOutlet.dequeueReusableCellWithIdentifier("cellID")  as! tableViewCell
    //the line under maybe?
    var college = colleges[indexPath.row]

    cell.textLabel?.text = college.name


    return cell
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
    return colleges.count
}
   func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
{
    if editingStyle == UITableViewCellEditingStyle.Delete
    {
        colleges.removeAtIndex(indexPath.row)
        tableView.reloadData()

    }
}



func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool
{
    return true
}

func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath)
{
    var collegeList = colleges[sourceIndexPath.row]
    colleges.removeAtIndex(sourceIndexPath.row)
    colleges.insert(collegeList, atIndex: destinationIndexPath.row)


}

cons list starts here

@IBAction func plusButtonTwo(sender: UIBarButtonItem)
{
    var alertTwo = UIAlertController(title: "Add Con", message: nil, preferredStyle: .Alert)
    alertTwo.addTextFieldWithConfigurationHandler
        { (textField) -> Void in
            textField.placeholder = "Add Con Here"
    }
    var cancelActionTwo = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)
    alertTwo.addAction(cancelActionTwo)


    var addActionTwo = UIAlertAction(title: "Add", style: .Default) { (action) -> Void in
        var addCollegesTextFieldTwo = alertTwo.textFields?[0] as! UITextField

        var netCollegeTwo = NetCollegeTwo(nameTwo: addCollegesTextFieldTwo.text)


        self.collegesTwo.append(netCollegeTwo)
        self.consTableView.reloadData()
    }

    alertTwo.addAction(addActionTwo)
    self.presentViewController(alertTwo, animated: true, completion: nil)

}



func consTableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell!
{
    let cellTwo = consTableView.dequeueReusableCellWithIdentifier("IDCell")  as! tableViewCell
    var collegeTwo = collegesTwo[indexPath.row]

    cellTwo.textLabel?.text = collegeTwo.conName


    return cellTwo
}

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

func consTableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
{
    if editingStyle == UITableViewCellEditingStyle.Delete
    {
        collegesTwo.removeAtIndex(indexPath.row)
        consTableView.reloadData()

    }
}

func consTableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool
{
    return true
}

func consTableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath)
{
    var collegeListTwo = collegesTwo[sourceIndexPath.row]
    collegesTwo.removeAtIndex(sourceIndexPath.row)
    collegesTwo.insert(collegeListTwo, atIndex: destinationIndexPath.row)


}



}

You cannot just change the signature of the UITableViewDelegate / UITableViewDataSource methods from tableView:cellForRowAtIndexPath: to consTableView:cellForRowAtIndexPath: and expect it to work. Both tables will just call tableView:cellForRowAtIndexPath: and show the same results.

If you want the same object to be the delegate and data source for both of your tables, you need to create an IBOutlet for both of your tables and put an if statement in your delegate and data source method implementations to provide different behavior depending on which table view is calling the method.

For example:

class prosConsViewController: UIViewController {
    @IBOutlet var prosTableViewOutlet: UITableView!
    @IBOutlet var consTableViewOutlet: UITableView!

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell! {
        if tableView == prosTableViewOutlet {
            // Pros logic
        }
        else {
            // Cons logic
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM