Sharonica
Sharonica

Reputation: 193

UIButton inside table cell not changing attributes

I have a UIButton inside my cell together with an image and a text label. I manage to change the image and label programatically, but the UIButton does not seem to respond to anything except isHidden. This is my code, the button that is not changing is followButton:

import UIKit

class ProfileTableCell: UITableViewCell {

@IBOutlet weak var name: UILabel!
@IBOutlet weak var profileImage: UIImageView!

@IBOutlet weak var followButton: UIButton!
override func awakeFromNib() {
    super.awakeFromNib()
    self.profileImage.layer.borderWidth = 0.0;
    self.profileImage.layer.cornerRadius = self.profileImage.frame.size.width/2;
    self.profileImage.clipsToBounds = true
    self.profileImage.image = UIImage(named: "belt")
    self.name.text = "Bar Refaeli"
    self.followButton.layer.borderColor = UIColor.black.cgColor
    self.followButton.layer.borderWidth = 3.0;
    self.followButton.layer.cornerRadius = self.frame.size.width/4
    self.followButton.backgroundColor = UIColor.black
}

func setCell(image: UIImage, name: String){

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

    // Configure the view for the selected state
}

}

The profileImage and name outlets change the appearance fine, like mentioned above. I also tried to remove the button and bring it back in, clean xcode project, remove the outlet reference and connecting it again. Pretty frustrated by now.

I also tried to change the background color of the button through the storyboard, just for testing, and it does not change it! what does change is the titleLabel and the text color.

Upvotes: 0

Views: 40

Answers (2)

Sharonica
Sharonica

Reputation: 193

Eventually I actually solved this by tossing the table view to the garbage and implementing the same needs using a collection view. there was no problem there..

Upvotes: 0

mrabins
mrabins

Reputation: 197

awakeFromNib()- Prepares the receiver for service after it has been loaded from an Interface Builder archive, or nib file.

Given that, move your code to a view initiating method like viewDidLoad or viewDidAppear(_:)

Child objects that are attributes like textLabels act differently than child view objects.

Upvotes: 1

Related Questions