选择单元格时,TableVIew 中的 UIImage 会移动

Posted

技术标签:

【中文标题】选择单元格时,TableVIew 中的 UIImage 会移动【英文标题】:UIImage in TableVIew moves when cell is selected 【发布时间】:2016-09-21 08:58:02 【问题描述】:

我有一个包含 UIImage 和标签的动态 tableView。 为了获取一些信息(以填充标签和图像),我进行了一次 get 调用,包括指向图像的链接,这些图像我使用以下代码以编程方式设置为 UIImage

代码片段:

if let url = NSURL(string: chiesa.foto)  //chiesa.foto is taken from GET req
   if let data = NSData(contentsOf: url as URL) 
     chiesa.image = UIImage(data: data as Data)! //chiesa.image is an UIImage
   

一切都是正确的,但是当我按下一行时,为了查看细节,图像会向右改变 10-11 px 的位置,当我按下后退按钮(在详细信息视图中)时,图像是仍处于“更改位置”(因此,向右 10-11 像素)。

这是 TableViewController 代码,在“viewDidLoad”方法下(仅从我的数据库中获取数据):

代码片段:

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


// MARK: - Table view data source

override func numberOfSections(in tableView: UITableView) -> Int 
    // #warning Incomplete implementation, return the number of sections
    return 1


override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    // #warning Incomplete implementation, return the number of rows
    return chiese.count


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: "ChieseTableViewCell", for: indexPath) as! ChieseTableViewCell

    let chiesa = chiese[indexPath.row]
    cell.labelNome.text = chiesa.nome
    if(cell.photoImageView == nil)
        print("nil")
    else
        cell.photoImageView.image = chiesa.image
    
    cell.backgroundColor = UIColor.clear
    return cell


override func prepare(for segue: UIStoryboardSegue, sender: Any?)
    if segue.identifier == "selectedChiesa" 
        var nextScene =  segue.destination as! ChiesaSelezionataViewController

        // Pass the selected object to the new view controller.
        if let indexPath = self.tableView.indexPathForSelectedRow 
            let nomeChiesa = chiese[indexPath.row].nome
            let storiaChiesa = chiese[indexPath.row].storia
            nextScene.nome = nomeChiesa
            nextScene.storia = storiaChiesa
        
    

【问题讨论】:

使用 didSelectMethod 粘贴代码 @Volodymyr 我没有在我的视图上实现这个“override func tableView(_ tableView: UITableView!, didSelectRowAt indexPath: IndexPath)”方法,因为我遇到了问题(如果实现了,当我选择单元格,它执行 2 segue,我不知道为什么)。 比粘贴方法处理你的水龙头 @Volodymyr 我已经编辑了我的帖子 你说的是连续按压。你如何检查它何时被按下?当您尝试查看详细信息时,我可以看到逻辑吗?我的意思是你的代码 【参考方案1】:

已解决:问题是约束。我刚刚更改了一些约束条件,它可以工作!

谢谢@Volodymyr

【讨论】:

以上是关于选择单元格时,TableVIew 中的 UIImage 会移动的主要内容,如果未能解决你的问题,请参考以下文章

TableView - 选择单元格时的操作

`tableView` 在选择单元格时向上移动

为 iOS 选择 TableView 单元格时视图已更改

TableView Swift 中的多选

Swift - 选择 TableView 单元格时动画(didSelectRowAtIndexPath)

当我点击 2 个 TableView 控制器之间的“didSelectRowAt indexPath”中的单元格时,我需要执行后退按钮操作