ios - 隐藏特定单元格的自定义 ViewTableCell 按钮

标签 ios uitableview swift

我遇到了 UITableViewCell 的问题。

当我生成我的 tableCells 时,我会检查一个值是否等于某个值,如果是,我会隐藏我在原型(prototype)单元格中制作的自定义按钮。问题是,带有我隐藏的标识符的按钮隐藏在每个单元格中,而不是仅隐藏在当前单元格中......

我环顾四周,但找不到事可做...你能帮忙吗?这是我的代码,请查看行 if currentPost.valueForKey... == "noLink"。谢谢 !

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
        var cell = tableView.dequeueReusableCellWithIdentifier("postCell", forIndexPath: indexPath) as! PostTableViewCell
        var currentCell = indexPath
        var currentPost = post[indexPath.row]
        var currentUser = followedInfo[currentPost.valueForKey("userID") as! String]

        cell.username.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left


        cell.userProfil.layer.cornerRadius = 0.5 * cell.userProfil.bounds.size.width
        cell.username.setTitle(currentUser?.valueForKey("username") as? String, forState: UIControlState.Normal)
        cell.postArtist.text = currentPost.valueForKey("artistName") as? String
        cell.postDescription.text = currentPost.valueForKey("postDescription") as? String
        cell.postTitle.text = currentPost.valueForKey("songName") as? String
        cell.postTime.text = "7J"
        cell.postDescription.sizeToFit()

        if currentPost.valueForKey("itunesLink") as? String == "noLink" {

            cell.postItunes.hidden = true;

        }else{
            cell.postItunes.addTarget(self, action: "getToStore:", forControlEvents: .TouchUpInside)
        }

        if currentPost.valueForKey("previewLink") as? String == "noPreview" {
            cell.postPlay.alpha = 0;
        }else{
            cell.postPlay.addTarget(self, action: "getPreview:", forControlEvents: .TouchUpInside)
        }

        if currentPost.valueForKey("location") as? String == "noLocalisation" {
            cell.postLocation.text = "Inconnu"
        }else{
            cell.postLocation.text = currentPost.valueForKey("location") as? String
        }


        if currentUser?.valueForKey("profilePicture")! != nil{
            var pictureFile: AnyObject? = currentUser?.valueForKey("profilePicture")!
            pictureFile!.getDataInBackgroundWithBlock({ (imageData, error) -> Void in
                var theImage = UIImage(data: imageData!)
                cell.userProfil.image = theImage
            })
        }

        if currentPost.valueForKey("coverLink") as? String == "customImage" {
            var profilPictureFile: AnyObject? = currentPost.valueForKey("postImage")

            profilPictureFile!.getDataInBackgroundWithBlock { (imageData , imageError ) -> Void in

                if imageError == nil{
                    let image = UIImage(data: imageData!)
                    cell.postPicture.image = image
                }
            }
        }else{
            if currentPost.valueForKey("coverLink") as? String == "noCover"{

                var cover = UIImage(named: "noCover")
                cell.postPicture.image = cover

            }else{
                var finalURL = NSURL(string: currentPost.valueForKey("coverLink") as! String)
                let request: NSURLRequest = NSURLRequest(URL: finalURL!)
                NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: {(response: NSURLResponse!,data: NSData!,error: NSError!) -> Void in
                    if error == nil {
                        var image = UIImage(data: data)


                        cell.postPicture.image = image

                    }
                    else {
                        println("Error: \(error.localizedDescription)")
                    }
                })
            }
        }









        return cell;
    }

最佳答案

如果你想让它显示,你不会将底部设置回可见,因为你正在重复使用单元格,最后一个设置是单元格的一部分,所以一旦你将它设置为隐藏为真,它仍然会隐藏直到您将 hidden 设置回 false,使用可重用单元格的最佳方法是始终将所有选项设置为您希望该单元格的选项,以避免设置为旧单元格。

    if currentPost.valueForKey("itunesLink") as? String == "noLink" {
        cell.postItunes.hidden = true;
    }else{
        cell.postItunes.hidden = false;
        cell.postItunes.addTarget(self, action: "getToStore:", forControlEvents: .TouchUpInside)
    }

关于ios - 隐藏特定单元格的自定义 ViewTableCell 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30469742/

相关文章:

ios - CIDetector始终为零,无法读取二维码

ios - 您将如何实现只显示选定单元格的表格?

swift - 新的 UIDatePicker 作为 inputView

ios - 在 iOS 应用程序中导入 libPusher

ios - PHAssetResource.assetResources(对于 : asset). first.OriginalFilename 在 300 个 Assets 后给出 nil

objective-c - 从 uiimageview 获取旋转后的图像

ios - Swift iOS - 如何将直接从 TableViewCell 的子类中获取的值传递给 TableView 的 didSelectRow?

ios - 在表格单元格中隐藏选择元素 - Swift

ios - iCarousel - 如何将焦点转移到左侧

swift - 删除最后一行并同时加载多行