Скрыть / показать @IBOulet @IBAction при загрузке в ячейку - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь, чтобы кнопка отображалась только при наличии значения чего-либо.

@IBAction func instagramButtonHide(_ sender: Any) {
    if(self.thisLens.instagramURL.isEmpty){
        addInstagramButton.isHidden = true
    }else{
        let url = URL(string: thisLens.instagramURL)!
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    }
}

Код работает, но только при нажатии на него.Поэтому я подумал, давайте поместим его в viewDidAppear, чтобы он загружался при загрузке представления, но поскольку он находится в ячейке, я не могу этого сделать.

Так что, если значение instagramURL пустое, я не хочукнопка, чтобы показать.

Я чувствую, что есть простое решение, но я не могу его найти.

@IBOutlet weak var addFacebookButton: UIButton!
@IBOutlet weak var shareButton: UIButton!

var thisLens: WordPressPost!


override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code


    addFacebookButton.isHidden = self.thisLens.facebookURL.isEmpty
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

@IBAction func favoriteButtonPressed(_ sender: UIButton) {

}

@IBAction func facebookButtonClicked(_ sender: Any) {
    let url = URL(string: thisLens.facebookURL)!
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

А другой

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    var thisLens: WordPressPost!

    var numberOfPosts = posts.count
    if searchController.isActive {
        numberOfPosts = filteredPosts.count
    }
    if indexPath.row != numberOfPosts {
        var thisPost: WordPressPost
        if searchController.isActive {
            thisPost = filteredPosts[indexPath.row]
        }
        else {
             thisPost = posts[indexPath.row]
        }
        let cell = tableView.dequeueReusableCell(withIdentifier: "lensCell", for: indexPath) as! LensCell

        cell.thisLens = thisPost
        if thisPost.authorName == "" {
            cell.authorNameLabel.text = "No Author"
        }
        else {
            cell.authorNameLabel.text = thisPost.authorName
        }
        if thisPost.title == "" {
            cell.lensNameLabel.text = "No Title"
        }
        else {
            cell.lensNameLabel.text = thisPost.title
        }

        if thisPost.image != nil {
            cell.snapCodeImageView.image = thisPost.image
            cell.imageLoadingIndicator.stopAnimating()
        }
        else {
            cell.snapCodeImageView.image = nil
            cell.imageLoadingIndicator.startAnimating()
            downloadImage(url: URL(string: thisPost.imageURL)!, cellIndexPath: indexPath, wasSearchControllerActive: searchController.isActive, typingUID: currentTypingUID)
        }
        return cell
    }
    else {
        let cell = tableView.dequeueReusableCell(withIdentifier: "loadingCell", for: indexPath) as! LoadingCell
        cell.loadingIndicator.startAnimating()
        return cell
    }
}

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Затем сделайте это внутри awakeFromNib ячейки

addInstagramButton.isHidden = self.thisLens.instagramURL == nil

или внутри cellForRowAt

let item = ///
cell.addInstagramButton.isHidden = item.instagramURL == nil
0 голосов
/ 03 декабря 2018

Код для установки кнопки в ячейке не принадлежит ни IBAction, ни viewDidAppear().Он принадлежит вашему методу tableView(_:cellForRowAt:).

Вам необходимо настроить этот метод для полной настройки ячейки.

Вам следует создать собственный класс ячейки, настроить шаблон в раскадровке,и подключите розетки к пользовательскому классу ячеек в шаблоне.Затем, когда вы удаляете ячейку из очереди, приведите ее к пользовательскому типу и установите соответствующее скрытое состояние кнопки ячейки.

Полное объяснение того, как управлять представлениями таблицы, выходит за рамки сообщения форума.Вам следует поискать учебник по теме и следовать ему.

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