Re: Getting IB_DESIGNABLE to work properly


Gary L. Wade
 

Looking at the code, it appears you’re missing a call to [super drawRect:dirtyRect] in your own drawRect: method.

On Mar 3, 2018, at 8:29 PM, Graham Cox <graham@...> wrote:

Hi all,

I’m working on a small custom view project (Mac), and have it working generally quite well.

I decided to make it IB_DESIGNABLE, and that too mostly works - I can see the view in IB rendered with the correct background and border colours, I see all the inspectable properties, and I have established that the internal subviews it creates are constructed. This isn’t easy to determine with IB, because it doesn’t display anything I log; I have to rely on NSBeep() to tell me if a given bit of code ran and so on - this is very unsatisfactory, because I can’t debug the view in the IB case, only in the normal runtime case, where it works perfectly.

The problem I have is that the subviews I create as part of my view exist, but never draw. That means the appearance in IB is blank.

I’m out of ideas on what I need to do to get this to work. 

If anyone’s got a few minutes to take a quick look at the project and see if they can spot the problem, I’d be very grateful: http://s3.amazonaws.com/Mapdiva/Source/Test%20Projects/GCDigitArrayControl.zip

This shows the difference of the views in IB and at runtime:

<Screen Shot 2018-03-04 at 3.23.08 pm.png><Screen Shot 2018-03-04 at 3.26.35 pm.png>
Each digit in the display is a separate subview rendering one character, created programmatically when the view is instantiated.

—Graham



Join {cocoa@apple-dev.groups.io to automatically receive all group messages.