优点和缺点列表Swift

时间:2015-11-16 18:30:21

标签: swift uitableview tableview uibarbuttonitem tableviewcell

我正在尝试使用表格视图在swift中制作优缺点列表。我得到了第一个工作列表但是当我添加第二个列表时,它只是复制第一个。

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)


}

缺点列表从这里开始

@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)


}



}

1 个答案:

答案 0 :(得分:1)

您不能只将UITableViewDelegate / UITableViewDataSource方法的签名从tableView:cellForRowAtIndexPath:更改为consTableView:cellForRowAtIndexPath:,并期望它能够正常运行。这两个表只会调用tableView:cellForRowAtIndexPath:并显示相同的结果。

如果您希望同一个对象成为两个表的委托和数据源,则需要为两个表创建IBOutlet并在委托中添加if语句,数据源方法实现,以根据调用方法的表视图提供不同的行为。

例如:

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
        }
    }
}