我需要保持在一个NSBrowser当前选择的路径更新的NSPathControl,但我有麻烦搞清楚收到通知时,路径已经从NSBrowser改变的一种方式。要做到这一点理想的方式将刚需观察的NSBrowser之路,关键路径,但给人的志愿只能观察set<key>方法,返回空消息,并没有更新(的setpath返回一个布尔值成功值)。

我也试过观察selectedCell关键路径,但是,当选择有改变,我没有得到通知。

有一些其他的真的很明显的方式做到这一点,我失踪?

有帮助吗?

解决方案

可可开发罗布Keniger以上的礼貌的:

  

您看了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
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top