/ / ako prispôsobiť pretiahnutie relácie NSTableView - object-c, macos, tableview

ako prispôsobiť preťahovanie relácie NSTableView - objektív-c, makrá, tableview

Prispôsobím a NSTableView, a prispôsobiť zobrazenie bunky na základe pohľadu s červeným pozadím farby a obrázkom.

napríklad:

tu zadajte popis obrázku

Tabuľka implementuje metódu:

-(void)tableView:(NSTableView *)tableView draggingSession:     (NSDraggingSession *)session willBeginAtPoint:(NSPoint)screenPoint     forRowIndexes:(NSIndexSet *)rowIndexes

Chcem prispôsobiť položku ťahania iba ako obrázok bez pozadia. tak som napísal kód takto:

[session enumerateDraggingItemsWithOptions:NSDraggingItemEnumerationConcurrent
forView:tableView
classes:[NSArray arrayWithObject:[NSPasteboardItem class]]
searchOptions:nil
usingBlock:^(NSDraggingItem *draggingItem, NSInteger index, BOOL *stop) {
[draggingItem setDraggingFrame:NSMakeRect(0, 0, StickerTableViewWidth, StickerTableViewHeight)
contents:[NSImage imageNamed:imageName]];
}];

ale v skutočnosti to nevstúpi do bloku.

vie niekto prečo?

odpovede:

0 pre odpoveď č. 1

Dôvod, prečo kreslím červenú farbu pozadia, je Návrhár ma požiada, aby som nakreslil masky cez zobrazenie bunky, čím označí vybraný stav. Ale TableView je tiež implementovaný zdroj pretiahnutia, takže keď pretiahnem bunku, vymaže sa aj zobrazenie masky.

Potom som googlil a zistil, že môžeme použiť zobrazenie riadkov tabuľky na nakreslenie vybraného stavu. Takže problém je vyriešený.

Stále však neviem, prečo sa blok nebude realizovať. Takže ak niekto vie, prosím, pošlite odpoveď, ďakujem veľmi pekne.