Ios 只有在按下另一个单元格后才调用DidDecreateRowatineXpath

Ios 只有在按下另一个单元格后才调用DidDecreateRowatineXpath,ios,uitableview,swift,Ios,Uitableview,Swift,所以,事情是这样的: 我使用自定义单元格实现了UITableViewController。。 然后,我用viewcontroller到viewcontroller替换了自动segue单元格到viewcontroller(故事板) 来自my UITableViewController的代码: // MARK: - Tableview managment override func tableView(tableView: UITableView, cellForRowAtIndexPat

所以,事情是这样的:

我使用自定义单元格实现了UITableViewController。。 然后,我用
viewcontroller到viewcontroller
替换了自动segue
单元格到viewcontroller
(故事板)

来自my UITableViewController的代码:

// MARK: - Tableview managment

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var lobbycell = tableView.dequeueReusableCellWithIdentifier("lobbycell") as! LobbyTableViewCell
        let row = indexPath.row
        if let channel = lobbies[row].lobbyName {
            lobbycell.lobbynameLabel.text = channel
        }
        if let usercount = lobbies[row].users?.count {
            lobbycell.usercountLabel.text = "Anzahl Spieler: \(usercount)"
        }
        if let host = lobbies[row].host?.username {
            lobbycell.hostnameLabel.text = "Host: \(host)"
        }
        return lobbycell
    }

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

    override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
        let selectedLobby = lobbies[indexPath.row]
        var loading = MBProgressHUD.showHUDAddedTo(self.view, animated: true)
        PFLobby.joinLobbyInBackgroundWithBlock(selectedLobby, user: PFUser.currentUser()!) { (success, error) -> Void in
            loading.hide(true)
            if success {
                self.performSegueWithIdentifier("joinLobby", sender: self)
            } else {

            }

        }
    }
现在问题来了: 如果我点击一个单元格,它会变成灰色(就像选中的一样),但不会调用
diddescrowatindexpath
func。。 只有当我点击另一个单元格时,它才会调用带有灰色(如所选)单元格的indexPath的
diddescrowatindexpath


您是否混淆了
didSelectRowAtIndexPath
didSelectRowAtIndexPath

后者只有在取消选中时才会被调用,因此在选择另一个单元格后才会调用它


如果您想调用
didSelectRowAtIndexPath
,那么在
didSelectRowAtIndexPath
中添加方法
diselectrowatindexpath
,它将以正确的方式取消选择。

您是否混淆了
didSelectRowAtIndexPath
didSelectRowAtIndexPath

后者只有在取消选中时才会被调用,因此在选择另一个单元格后才会调用它


如果您想调用
didSelectRowAtIndexPath
,则在
didSelectRowAtIndexPath
中添加方法
deselectRowAtIndexPath
,它将以正确的方式取消选择。

这是预期的行为
tableView(ux0:didDeceloseRowAtIndexPath:)
仅在选择另一个单元格后调用

如果需要,可以在
表视图(:\u willSelectRowAtIndexPath:)
中截取选择事件:


将选择此方法返回的索引路径。如果返回
nil
,则不会选择任何内容。

这是预期行为
tableView(ux0:didDeceloseRowAtIndexPath:)
仅在选择另一个单元格后调用

如果需要,可以在
表视图(:\u willSelectRowAtIndexPath:)
中截取选择事件:


将选择此方法返回的索引路径。如果返回
nil
,则不会选择任何内容。

您的意思是/希望使用
didSelectRowAtIndexPath
而不是
didSelectRowAtIndexPath
?(选择vs取消选择)当然是Omg xD。。抱歉,自动完成谢谢..您的意思是/希望使用
didselectrowatinexpath
而不是
didselectrowatinexpath
?(选择vs取消选择)当然是Omg xD。。抱歉,自动完成谢谢..是的,但是如果您在初始化时选择了一个单元格,那么应该在第一个单元格选择时调用它。方法如下:是的,但是如果在初始化时选择了一个单元格,那么应该在第一个单元格选择时调用它。以下是如何:
override func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {

    if let selectedIndex = tableView.indexPathForSelectedRow() where selectedIndex == indexPath {
        tableView.deselectRowAtIndexPath(indexPath, animated: true)
        return nil
    }

    return indexPath
}