NSTableView editColumn:row:withEvent:select: не прави раздели правилно?

Ако използвам следния код, за да започна да редактирам NSTableView:

    [dataTableView editColumn: 0
                          row: 0
                    withEvent: nil
                       select: YES];

Първата комбинация от ред/колона в таблицата вече е в режим на редактиране. Ако обаче имам повече от една колона и натисна бутона за раздел, редакторът не превключва към следващата колона. По-скоро съществува режим на редактиране.

Ако щракна върху първия ред/колона, за да вляза в режим на редактиране, когато натисна раздела, редакторът на полето се премества към следващата колона (както бих очаквал).

Някакви идеи защо би се случило това? И как мога да накарам обаждането си до editColumn:row:withEvent:select: да се раздели правилно?


person Kyle    schedule 09.08.2013    source източник
comment
Тази връзка може да ви помогне да разрешите проблема си stackoverflow.com/questions/7536167/   -  person PR Singh    schedule 27.09.2013


Отговори (2)


Вграденото поведение на раздела зависи от избрания ред, така че просто изберете реда заедно с редактирането на колоната:

[self.tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:rowIndex] byExtendingSelection:NO];
[self.tableView editColumn:0 row:rowIndex withEvent:nil select:YES];
person robenkleene    schedule 01.03.2014

Както някой каза в този отговор, Бележки за изданието на AppKit казват, че разделянето между клетките трябва да работи автоматично. Вашият делегат на tableview вероятно не прилага този метод:

- (BOOL)tableView:(NSTableView *)tableView shouldEditTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row

Ако искате да персонализирате поведението на раздела, трябва да направите вашия контролер да бъде делегат на вашите текстови изгледи и след това да внедрите:

- (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector {
    if (aSelector == @selector(insertTab:)) {
        ..
    } else if (aSelector == @selector(insertBacktab:)) {
        ..
    }
}
person Pierre Houston    schedule 03.10.2013