Using an NSButtonCell with template image in a NSTableView
-
21-09-2019 - |
문제
In Interface Builder, I have set the dataCell of one of the columns of my NSTableView instance to be NSButtonCell. This works as expected, however, trying to use a ‘template’ image doesn't yield the expected visual result when clicking the button.
How I configure the NSButtonCell:
- Image: NSRevealFreestandingTemplate
- Scaling: None
- Bezel: Bevel
- Type: Momentary Push In
- Bordered: false
Expected result when clicking the button:
- Since the image is a ‘template’, the button should render its ‘on’ state.
- The background, ie the space surrounding the image, should not change.
Actual result when clicking the button:
- No difference in the ‘state’ of the rendered image.
- The background color changes to white.
Even-though I’ve tried my best to make the explanation of the problem as concise as possible, I’ve also made a simple screencast to visually illustrate the problem. And uploaded the demo app.
해결책
You need to set the button type to NSMomentaryChangeButton.
다른 팁
So, the solution turns out to be; don't use template images for this…
I decided to show the correct image states myself and discovered that with a non-template image, it works fine.