如何保持与选定单元格中的NSBrowser路径更新的NSPathControl
-
21-08-2019 - |
题
我需要保持在一个NSBrowser当前选择的路径更新的NSPathControl,但我有麻烦搞清楚收到通知时,路径已经从NSBrowser改变的一种方式。要做到这一点理想的方式将刚需观察的NSBrowser之路,关键路径,但给人的志愿只能观察set<key>
方法,返回空消息,并没有更新(的setpath返回一个布尔值成功值)。
我也试过观察selectedCell关键路径,但是,当选择有改变,我没有得到通知。
有一些其他的真的很明显的方式做到这一点,我失踪?
解决方案
您看了SimpleBrowser 例如,在/开发人员/实施例?它 演示了如何获取当前选择 当由用户改变, 基本上是由刚刚建立 所述NSBrowser的动作。
这的确是做到这一点的方式。只是实现一个 - (空)broswerClicked:方法(包括映射它在Interface Builder)任何你想要的每一次发生的方法里面选择更改,e.g
。- (void)browserClicked:(id)browser {
self.pathToSelectedCell = [browser path]; // NSPathControl is bound to pathToSelectedCell
}
其他提示
我只是检查在IB,它看起来像NSBrowser具有选择指数路径结合(NSIndexPath对象的数组),你可以可能与KVO监视。很奇怪,但我没有看到在文档的任何提及,所以你可能需要做一些调查,看看这东西,你应该或不应该使用,即使它似乎工作。如果是这样,在你的志愿观测方法,你会发现浏览器的电流路径,从而将其转换成一个NSURL路径控制可以使用。
如果不工作也有委托方法- (BOOL)browser:(NSBrowser *)sender selectRow:(NSInteger)row inColumn:(NSInteger)column
和- (BOOL)browser:(NSBrowser *)sender selectCellWithString:(NSString *)title inColumn:(NSInteger)column
。
作为10.6,人们可以找出选择哪些项目,通过使用委托回调如下:
- (NSIndexSet *)browser:(NSBrowser *)browser selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes inColumn:(NSInteger)column
{
NSLog(@"New first item of the new selection is at index %@", [proposedSelectionIndexes firstIndex]);
// Do something with the selected index or indicies
return proposedSelectionIndexes; // Allow the selection to occur by not changing this
}