Swift, как обновить метку subview и изображение с помощью кнопки в ячейке tableview - PullRequest
0 голосов
/ 12 июля 2020

Я хочу обновить текст метки подпредставления и фотографию представления изображения в моей раскадровке, когда я нажимаю кнопку в моем TableCell. Я пробовал использовать tableView didSelectRowAt, но он работает только тогда, когда я выделяю ячейку, а не когда я использую кнопку tableviewcell.

Здесь вы можете увидеть видео с моей проблемой.

https://www.loom.com/share/1f147a67bea548b192b654ceb78722c9

Ниже вы можете увидеть мой код, используемый для обновления подпредставления с помощью didSelectRowAt

        func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    EditViewDescriptionLabel.text = userPostDescription[indexPath.row]
    EditPostImageView.sd_setImage(with: URL(string: userPostImageArray[indexPath.row]))
}

Есть ли способ обновить подпредставление, щелкнув вместо этого значок шестеренки?

Ниже мой код FeedViewCell

        //
//  FeedCell.swift
//  VidaClock
//
//  Created by Irving Gonzalez on 5/30/20.
//  Copyright © 2020 Viva La App. All rights reserved.
//

    import UIKit
    
    protocol EditPostDelegate {
        func gearButtonPressed(_ sender: Any)
    }
    
    class FeedCell: UITableViewCell {
        
        @IBOutlet weak var FeedCellUserNameLabel: UILabel!
        @IBOutlet weak var userProfilePhotoFeedCellLabel: UIImageView!
        @IBOutlet weak var dateFeedCellLabel: UILabel!
        @IBOutlet weak var postImageFeedCellLabel: UIImageView!
        @IBOutlet weak var likeCountFeedCellLabel: UILabel!
        @IBOutlet weak var postDescriptionLabel: UILabel!
        @IBOutlet weak var documentIDLabel: UILabel!
        @IBOutlet weak var FeedViewGearButtonOutlet: UIButton!
        
        override func awakeFromNib() {
            super.awakeFromNib()
            // Initialization code
        }
    
        override func layoutSubviews() {
               super.layoutSubviews()
           }
        
        override func setSelected(_ selected: Bool, animated: Bool) {
            super.setSelected(selected, animated: animated)
            // Configure the view for the selected state
        }
        
        @IBAction func likeButtonClicked(_ sender: Any) {
        }
        
        var delegate1: EditPostDelegate?
        
        @IBAction func postGearButtonPressed(_ sender: Any) {
            print("postGearButtonPressed")
            delegate1?.gearButtonPressed(AnyObject.self)
        }
        
        
    }

1 Ответ

1 голос
/ 12 июля 2020

Вам необходимо установить text для метки EditViewDescriptionLabel после нажатия значка шестеренки. У вас есть делегат, который передает сообщение вашему контроллеру просмотра. В вызове gearButtonPressed задает текст для вашей метки аналогично тому, как вы это делаете в didSelectRowAt indexPath.

Вам нужно установить text для вашей метки EditViewDescriptionLabel после того, как значок шестеренки также нажат. У вас есть делегат, который передает сообщение вашему контроллеру просмотра. В вызове gearButtonPressed задайте текст для вашей метки аналогично тому, как вы это делаете в didSelectRowAt indexPath.

Сделайте свой протокол, как показано ниже
(Передайте данные, которые лучше всего подходят для вашего Здесь я передаю только описание)

protocol EditPostDelegate: class {
    func gearButtonPressed(description: String)
}

Затем при действии кнопки

if let descriptionContent = postDescriptionLabel.text{
    delegate1?.gearButtonPressed(description: descriptionContent)
}

Затем установите текст для editViewDescriptionLabel в реализации метода gearButtonPressed, а затем покажите свой просмотр контроллера. Передайте данные, которые необходимо использовать, в контроллер представления, вот так.

Также рассмотрите возможность именования переменных в camelCase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...