Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSOutlineView基于视图-仅在选中时显示按钮_Objective C_Cocoa_Nsoutlineview - Fatal编程技术网

Objective c NSOutlineView基于视图-仅在选中时显示按钮

Objective c NSOutlineView基于视图-仅在选中时显示按钮,objective-c,cocoa,nsoutlineview,Objective C,Cocoa,Nsoutlineview,我有一个NSOutlineView视图,基于一列标题+图像/文本/按钮 我只想在选中项目时显示按钮 我使用以下代码: - (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item { .... SidebarTableCellView *sidebarTableCellView = [outlineView makeVi

我有一个NSOutlineView视图,基于一列标题+图像/文本/按钮

我只想在选中项目时显示按钮

我使用以下代码:

- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
   ....
  SidebarTableCellView *sidebarTableCellView = [outlineView makeViewWithIdentifier:@"MainCell" owner:self];
  [sidebarTableCellView.buttonProgramme setHidden:YES];
  if (outlineView.selectedRow == [outlineView rowForItem:item])
            [sidebarTableCellView.buttonProgramme setHidden:NO];
但它不工作,按钮总是隐藏的!我想不出是什么问题


编辑:if语句中的断点=>if语句从不匹配

我通过添加以下代码(viewForTableColumn中没有更改)解决了我的问题:

通过这样做,我们强制调用viewForTableColumn:当用户更改选择时

谢谢

- (void)outlineViewSelectionDidChange:(NSNotification *)notification {

    NSNotificationCenter * center = [NSNotificationCenter defaultCenter];
    [center removeObserver:self
                      name:@"NSOutlineViewSelectionDidChangeNotification"
                    object:self.sidebarOutlineView];

    NSInteger s = [self.sidebarOutlineView selectedRow];
    NSInteger lastSelectedRow = [[self.globalVariableDictionary objectForKey:@"lastSelectedRow"] integerValue];
    [self.globalVariableDictionary setObject:[NSNumber numberWithInteger:s] forKey:@"lastSelectedRow"];

    [self.sidebarOutlineView reloadDataForRowIndexes:[NSIndexSet indexSetWithIndex:s]
                                       columnIndexes:[NSIndexSet indexSetWithIndex:0]];
    [self.sidebarOutlineView reloadDataForRowIndexes:[NSIndexSet indexSetWithIndex:lastSelectedRow]
                                       columnIndexes:[NSIndexSet indexSetWithIndex:0]];
    [self.sidebarOutlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:s] byExtendingSelection:NO];

    [center addObserver:self
               selector:@selector(outlineViewSelectionDidChange:)
                   name:@"NSOutlineViewSelectionDidChangeNotification"
                 object:self.sidebarOutlineView];

    [center addObserver:self
               selector:@selector(outlineViewSelectionDidChange:)
                   name:@"NSOutlineViewSelectionDidChangeNotification"
                 object:self.sidebarOutlineView];
}