在swift中选择tableView中的行时出现问题

时间:2014-08-07 13:22:29

标签: ios uitableview swift

通过查看标题,您几乎可以意识到我的问题是什么,我在故事板上有一个表格视图,无论我尝试做什么,当我选择一行时仍然没有任何反应 我试过这段代码:

func tableView (tableView:UITableView , cellForRowAtIndexPath indexPath : NSIndexPath)->UITableViewCell{
    var cellIdentifier = "Cell"
    var cell :UITableViewCell

    cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as UITableViewCell

    var st = indexPath

    if (cell == nil){
        cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: cellIdentifier)
    }
    var word:NSString
    word=message[indexPath.row] as NSString
    if word.containsString("You just sent a message"){
        cell.textLabel.text = word.componentsSeparatedByString("\n")[1].componentsSeparatedByString(":")[6] as NSString}
    if word.containsString("Users"){
        var smth = word.componentsSeparatedByString(":")
        var word = ""
        for i in (1..<smth.count){
            var hey = smth[i] as NSString
            var elst = ""
            elst += hey as NSString
            word += elst + " "

        }
        cell.textLabel.text = word
    }
    else
    {
        cell.textLabel.text = word
    }
        return cell

}
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
    println("You selected cell #\(indexPath.row)!")
}


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

在对此进行护目镜后,我发现didSelectRowAtIndexPath函数是负责人,但在实现之后仍未发生任何事情

正如你所看到的那样,主要的功能可以解决问题,它确实会在每个单元格中添加一些内容[正确的事情]

任何想法为什么会这样?

1 个答案:

答案 0 :(得分:4)

您是否将表格视图的委托设置为此快速类? tableview是在IB中的哪个位置,或者是用代码创建的?如果在代码中您需要手动设置委托,如果在IB中,则可以拖放以设置委托。

如果设置表视图并通过代码初始化,请执行此操作,

import UIKit

class ViewController: UIViewController,UITableViewDelegate  {

    override func viewDidLoad() {

        super.viewDidLoad()

        var tableView:UITableView = UITableView()

        tableView.delegate = self;

        // Do any additional setup after loading the view, typically from a nib.
    }

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

}

注意:如果没有像UIViewController旁边那样指定UITableViewDelegate,我收到了一个错误,但同样会产生一个带有Objective C的警告。