Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Since Updating to xcode 12 I am not able to place any UIControl inside UITableViewCell

I have a search form that uses a tableview. After updating Xcode 12 today the UISwitch, UITextField, UISlider no longer work when nested inside a UITableViewCell. Is there a property that has changed that I need to set to make this work again?

To be sure it wasn't just my project, I created a new project and nestled a UITextField inside of it and it doesn't work either.

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell()
    
    let textField = UITextField(frame: CGRect(x: 5, y: 5, width: 400.0, height: 25.0))
    textField.delegate = self
    textField.backgroundColor = .blue
    cell.addSubview(textField)

    return cell
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("this will get called even when selecting the UITextField")
}

func textFieldDidBeginEditing(_ textField: UITextField) {
    print("this is never called")
}
like image 437
Jason Foster Avatar asked Sep 17 '20 22:09

Jason Foster


People also ask

Is it possible to update Xcode from the App Store?

Xcode can be updated from the App Store. However, I do not see the possibility to update it from App Store and also if I check for updates from command line it says that no new software is available: $ softwareupdate --list Software Update Tool

Why can’t I download Xcode 11 2?

Doing an uninstall and a PRAM reset each time there is an Xcode update is something that needs to be fixed, as this problem is occuring with too many users/developers. Just like 11.1, 11.2 will not even download here from the App Store.

What to do when Xcode is too outdated?

Error: Your Xcode (7.3) is too outdated. Please update to Xcode 8.2 (or delete it). Xcode can be updated from the App Store. However, I do not see the possibility to update it from App Store and also if I check for updates from command line it says that no new software is available:

Does the App Center build support Xcode 12?

Closing this as App Center Build now fully supports Xcode 12.5. Sorry, something went wrong. Oh great, congratulations to any internal heroes that got this done. Should we raise another issue for MacOS 12 now, so its ready when we need it?


2 Answers

Your code was always wrong:

cell.addSubview(textField)

You must never add a subview to a cell. Add the subview to the cell's contentView.

like image 101
matt Avatar answered Oct 25 '22 23:10

matt


The same happened to me since I upgraded to iOS 14. This has worked for me when I add the subViews directly to the cell,

cell.contentView.isUserInteractionEnabled = true

like image 39
Guille Avatar answered Oct 26 '22 00:10

Guille