6

Ho una colonna di tabella di NSTableView associata a un NSArrayController in Interface Builder. Il controller di array è associato a Shared User Defaults Controller per Content Array. Dovevo selezionare Handles Content As Compound Value per fare in modo che l'aggiunta di nuovi oggetti funzionasse. Sfortunatamente, questo disabilita l'evidenziazione della riga della tabella quando I add: un oggetto nell'array. L'oggetto viene aggiunto ma la riga della tabella non è evidenziata e devi fare doppio clic dove pensi che la riga sia in grado di modificarla.Rendi modificabile la riga NSTableView quando si aggiunge un oggetto con NSArrayController

Il mio obiettivo è di add: una riga per la visualizzazione tabella utilizzando il controller di array; quindi, avere quella riga automaticamente evidenziata e modificabile per l'utente.

attributi per il NSArrayController:

enter image description here

associazioni per la la NSArrayController:

enter image description here

Attacchi per la colonna TableView:

enter image description here

risposta

0

La soluzione che ho trovato here ha funzionato per me.

È necessario sottoclasse NSArrayController e implementare il proprio add: metodo

// 
// MyArrayController.h 
// 

#import <AppKit/AppKit.h> 

@interface MyArrayController : NSArrayController 

@end 

e

// 
// MyArrayController.m 
// 

#import "MyArrayController.h" 

@implementation MyArrayController 


- (void)add:(id)sender { 
    [super add:sender] ; 

    [self performSelector:@selector(selectLastObject) 
       withObject:nil 
       afterDelay:0.0] ; 
} 

- (void)selectLastObject { 
    if ([self selectsInsertedObjects]) { 
     NSArray* arrangedObjects = [self arrangedObjects] ; 
     NSInteger nObjects = [arrangedObjects count] ; 
     if (nObjects > 0) { 
      [self setSelectionIndex:nObjects-1] ; 
     } 
    } 
} 


@end 
Problemi correlati