1

Я пытаюсь создать список плюсов и минусов в swift, используя таблицы. Я получил первый список для работы, но когда я добавил второй, он просто копирует первый.Плюсы и минусы список 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) 


} 



} 
+0

Это две части формы кода один класс 'prosConsViewController'? И как вы работаете с ним, если это не унаследованная наследуемая форма 'UITableViewController' или' UITableViewDataSorce' и 'UITableViewDelegate' протоколов? –

ответ

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