无法响应 outlineViewItemDidExpand 更改列宽
Can't change column width in response to outlineViewItemDidExpand
每当 NSOutlineView
中的节点展开时,我想将列宽更新为最宽条目的宽度。因此,我的代表听 outlineViewItemDidExpand
并调用
[column setWidth:maxColumnWidth];
在里面。 maxColumnWidth
是最宽条目的宽度。
然而,出于某种原因,从 outlineViewItemDidExpand
内部调用 setWidth
似乎没有任何作用。当我稍后调用它时,例如作为对按钮点击的响应,它工作得很好,但从 outlineViewItemDidExpand
内部它什么都不做。
所以知道每当用户单击扩展器图标时我可以做什么来更新列宽吗?非常感谢!
我能够通过在 outlineViewItemDidExpand
中从 performSelector()
调用的选择器调用 setWidth()
来解决这个问题,就像这样:
-(void) setColumnWidth
{
[theColumn setWidth:...];
}
-(void) outlineViewItemDidExpand:(NSNotification*)notification
{
// calling setWidth() here doesn't work
// [theColumn setWidth:...];
// but calling setWidth() from a selector works!
[self performSelector:@selector(setColumnWidth) withObject:nil afterDelay:0.0];
}
别问我为什么调用 setWidth()
只能在选择器中起作用,但它确实起作用...
如果 autoresizesOutlineColumn
为 YES
(默认),则大纲视图会在 outlineViewItemDidExpand
之后调整大纲列的大小。解决方法:将autoresizesOutlineColumn
设置为NO
.
每当 NSOutlineView
中的节点展开时,我想将列宽更新为最宽条目的宽度。因此,我的代表听 outlineViewItemDidExpand
并调用
[column setWidth:maxColumnWidth];
在里面。 maxColumnWidth
是最宽条目的宽度。
然而,出于某种原因,从 outlineViewItemDidExpand
内部调用 setWidth
似乎没有任何作用。当我稍后调用它时,例如作为对按钮点击的响应,它工作得很好,但从 outlineViewItemDidExpand
内部它什么都不做。
所以知道每当用户单击扩展器图标时我可以做什么来更新列宽吗?非常感谢!
我能够通过在 outlineViewItemDidExpand
中从 performSelector()
调用的选择器调用 setWidth()
来解决这个问题,就像这样:
-(void) setColumnWidth
{
[theColumn setWidth:...];
}
-(void) outlineViewItemDidExpand:(NSNotification*)notification
{
// calling setWidth() here doesn't work
// [theColumn setWidth:...];
// but calling setWidth() from a selector works!
[self performSelector:@selector(setColumnWidth) withObject:nil afterDelay:0.0];
}
别问我为什么调用 setWidth()
只能在选择器中起作用,但它确实起作用...
如果 autoresizesOutlineColumn
为 YES
(默认),则大纲视图会在 outlineViewItemDidExpand
之后调整大纲列的大小。解决方法:将autoresizesOutlineColumn
设置为NO
.