首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >职业与合作名单斯威夫特

职业与合作名单斯威夫特
EN

Stack Overflow用户
提问于 2015-11-16 18:30:20
回答 1查看 92关注 0票数 1

我正试图在快速使用表视图中列出利弊表。我有第一个列表要工作,但是当我添加第二个列表时,它只是在复制第一个列表。

代码语言:javascript
代码运行次数:0
运行
复制
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)


}

反对名单从这里开始

代码语言:javascript
代码运行次数:0
运行
复制
@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)


}



}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-16 19:35:11

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

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

例如:

代码语言:javascript
代码运行次数:0
运行
复制
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
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33742149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档