我试图只让按钮显示出某物的值是否可用。
@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
}
}
答案 0 :(得分:0)
在单元格中设置按钮的代码不属于IBAction或viewDidAppear()
中。它属于您的tableView(_:cellForRowAt:)
方法。
您需要设置该方法以完全配置单元。
您应该创建一个自定义单元类,在情节提要中设置一个模板,并将插座连接到模板中的自定义单元类。然后,当您使单元出队时,将其强制转换为自定义类型,并适当设置单元按钮的隐藏状态。
完全解释如何管理表视图超出了论坛的讨论范围。您应该去查找有关该主题的教程,然后继续学习。
答案 1 :(得分:0)
然后在单元格awakeFromNib
内执行
addInstagramButton.isHidden = self.thisLens.instagramURL == nil
或在cellForRowAt
内
let item = ///
cell.addInstagramButton.isHidden = item.instagramURL == nil