/ / Kakao: Môže byť NSArrayController podtriedený tak, aby poskytoval vlastné „kontrolné kľúče“? - kakao, viazanie kakaa, pozorovanie kľúčovej hodnoty, nsarray ovládač, podtrieda

Kakao: Môže byť NSArrayController podtriedou na poskytovanie vlastných "Controller Key" s? - kakao, väzby na kakao, sledovanie kľúčov, nsarraycontroller, podtriedenie

A ak áno, Ako?

Zdá sa to ako veľmi užitočná vec, ktorú môžem urobiť, ale dokážem to na celý život zistiť alebo nájsť akékoľvek informácie na internete!

Mám na mysli konkrétnu situáciudve susediace tabuľky, vľavo pôvodne obsahuje zoznam mien, potom chcem „presunúť doľava“ a „presunúť sa vpravo“ na presun mien z jednej tabuľky do druhej.

Myslel som si, že elegantným riešením tohto problému by bolo použitie jedného radiča riadkov s dvoma radičovými klávesami „usporiadanéLeftObjects“ a usporiadanéRightObjects “.

Tu sa zblázním! Môže mi niekto vrhnúť trochu svetla. Na požiadanie pošlem ukážkový kód.

Veľká vďaka

EDIT: počiatočné pokusy

Podtrieda NSArrayController je implementovaná (zatiaľ):

@interface LeftRightArrayController : NSArrayController {
NSArray * leftObjects;
}

-(NSArray *)leftObjects;
-(void)setLeftObjects:(NSArray *)newLeftObjects;
@end


@implementation LeftRightArrayController

-(NSArray *)leftObjects {
return leftObjects;
}

-(void)setLeftObjects:(NSArray *)newLeftObjects {
leftObjects = newLeftObjects;
}


- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
[self setLeftObjects:[NSArray arrayWithArray:[self arrangedObjects]]];
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}

@end

A údaje poskytnuté kontrolórovi:

[myArrayController addObserver:myArrayController forKeyPath:@"arrangedObjects" options:0 context:NULL];

NSString *myKey = [NSString stringWithString:@"name"];
NSDictionary *myNewDictionary1 = [NSDictionary dictionaryWithObject:@"date1" forKey:myKey];

NSArray *myArray = [NSArray arrayWithObjects:myNewDictionary1, nil];

[myArrayController setContent:myArray];

Tento kód funguje, keď sa viažu iba na „Left Right Array Controller.arrangedObjects.name“ Prestane sa však hneď, ako sa pokúsim spojiť s „Left Right Array Controller.leftObjects.name“

odpovede:

0 pre odpoveď č. 1

Toto nechcete robiť. Vždy by ste ich mali používať NSArrayController na zobrazenie tabuľky. Vo vašom prípade by ste mali mať dve podporné polia, jedno pre ľavý objekt a druhé pre pravý objekt.

Potom by ste mali každý pohľad tabuľky spojiť s príslušným poľom prostredníctvom vlastného radiča polí.

Potom by ste mali implementovať samostatný radična riadenie prenosu údajov medzi poľami buď manipuláciou s poliami priamo pomocou prístupových zariadení kompatibilných s KVO, alebo použitím rôznych metód vloženia / odstránenia NSArrayController.