I’m afraid there’s no magic bullet for this. PeterNeg is right that you have to use -tableView:heightOfRow:, but it’s quite complicated to set up, because you’ll need to maintain a cache or row heights (so that you don’t recalculate them every time your delegate is queried, which will slow things down), and you’ll have to do all the height calculations on your own using NSLayoutManager methods. You’ll also need to observe changes to the frame of the edited text field, and changes to the text, and tell your table to resize accordingly.Below is a full breakdown of how I achieve this in my app. Mine is done in NSOutlineView and in Objective-C, but the principle is the same, so you can adapt this for NSTableView and Swift.1. Keep a dictionary of row heights. This will store the row height NSNumber against a unique ID of some sort associated with your model object.2. Maintain an isRecalculatingRowHeights BOOL.3. Implement a -recalculateRowHeights method which:a. Removes all objects from the rowHeights dictionary.b