NSTableView subclassen voor keyDown
24 maart 2005 - 13:47   
geplaatst door: xylone
Ik zit met een probleem, en ik hoop dat iemand mij hiermee opweg kan helpen.

Ik ben net begonnen met ontwikkelen in xCode (in Java) en loop direct vast.

Wat ik wil is een NSTableView gebruiken en wanneer ik bv op de ENTER druk een bepaalde actie laten uitvoeren.
Ik weet dat dit moet worden gedaan d.m.v. de NSTableView te subclassen en hierin te implementeren. Het probleem is echter: Hoe krijg ik deze subclass op mijn window in de Interface Builder??? Ik kan er wel een NSTableView op gooien, maar ik kan hier in de info panel niet de custom class aanpassen naar de suclass. Waarom niet? Of ben ik nu verkeerd bezig?

Ik hoop dat iemand mij de juiste richting in kan wijzen.

-- none --
NSTableView subclassen voor keyDown
24 maart 2005 - 16:11    reactie #1
geplaatst door: Kool
Sleep de header (MyTableView.h) van jouw subclass naar je nib-bestand. Nu kan je wel de class van de NSTableView veranderen in MyTableView.

Althans, voor Objective-C werkt het zo. Ik gebruik geen Java, maar het zal niet veel anders zijn op dit punt.

Hoe Kool Super Kool werd... zal nu na het opschonen van het forum een raadsel blijven voor wie dit nog niet wist.
NSTableView subclassen voor keyDown
24 maart 2005 - 16:28    reactie #2
geplaatst door: xylone
Maar ik dacht dat, wanneer je gebruik maakt van de IB dat deze header file automatisch zou worden toegevoegd aan je nib file.

Ik neem aan dat je nl. voordat je ook maar 1 letter hebt ingetikt, je bijna volledige interface kunt bouwen in de interface builder alvorens te beginnen met de implementatie.

(Bewerkt door xylone om 16:31, 24-03-2005)

-- none --
NSTableView subclassen voor keyDown
24 maart 2005 - 17:02    reactie #3
geplaatst door: Reflex
Doe maar gewoon wat kool zegt. IB is leuk, maar het vericht geen wonderen :)

dan nog even de juiste custom class kiezen, en je keyDown: zou automatisch meoten werken...

(ps. waarom zou je keydown in een tableview willen afvangen?)

God has a hard on for Marines, because we kill everything we see. He plays His games, we play ours. To show our appreciation for so much power, we keep heaven packed with fresh souls. God was here before the Marine Corps, so you can give your heart to Jesus, but your ass belongs to the corps.
NSTableView subclassen voor keyDown
24 maart 2005 - 20:28    reactie #4
geplaatst door: YoRabbit
(ps. waarom zou je keydown in een tableview willen afvangen?)

om in die tableview dmv de delete toets een regel weg te halen,
of met pijltje omlaag een nieuwe regel toe te voegen als je onderaan de tabel staat..

of zijn daar betere methoden voor (gebruik zelf Cocoa)?

Web designer & developer; iOS App developer
NSTableView subclassen voor keyDown
24 maart 2005 - 23:52    reactie #5
geplaatst door: Reflex
Wat betreft de delete toets; ik weet zo even niet of daar een kortere manier voor is, maar wellicht is deze methode handiger:

- (void)deleteBackward:(id)sender

wordt aangeroepen als de backspace toets ingedrukt wordt.
Ik weet niet 100% zeker dat het werkt, maar zo wel, dan zou dat wel zo makkelijk zijn, gewoon even proberen dus..
(zie: ADC - NSResponder - deleteBackward )

wat je dus kunt doen, is of een category schrijven die deze methode implementeerd, of NSTableView subclassen... wat jij wilt :)

Wat het pijltje omlaag voor een nieuwe row betreft, dit lijkt mij een slecht idee... is niet erg gebruikersvriendelijk. (denk er bijvoorbeeld aan, dat je van boven naar benedenscrolled met de pijltjestoetsen, en dan voorbij het laatste element schiet, en ineens 10 nieuwe elementen hebt) een CMD-SHIFT-N of andere toetscombinatie is dan wellicht meer gewenst

God has a hard on for Marines, because we kill everything we see. He plays His games, we play ours. To show our appreciation for so much power, we keep heaven packed with fresh souls. God was here before the Marine Corps, so you can give your heart to Jesus, but your ass belongs to the corps.
NSTableView subclassen voor keyDown
25 maart 2005 - 00:00    reactie #6
geplaatst door: Kool

Citaat
xylone om 16:28, 24-03-2005
Ik neem aan dat je nl. voordat je ook maar 1 letter hebt ingetikt, je bijna volledige interface kunt bouwen in de interface builder alvorens te beginnen met de implementatie.

Dat kan toch? Alleen wordt jouw keyDown methode dan niet aangeroepen.  :tounge:

Hoe Kool Super Kool werd... zal nu na het opschonen van het forum een raadsel blijven voor wie dit nog niet wist.
NSTableView subclassen voor keyDown
25 maart 2005 - 08:13    reactie #7
geplaatst door: xylone
Ik wil niet alleen een ENTER kunnen opvangen, maar ook andere toetsen. Ik wil het volledig kunnen bedienen met het toetsenbord zeg maar. Dus subclasses leek mij de beste oplossing.

Wanneer je werkt in java, krijg je geen header files, en kun je die er dus niet opslepen. Maar zelfs wanneer ik in objective-C deze methode probeer, zie ik wel de subclass in de classes view staan (Staat er overigens ook gewoon wanneer ik deze subclass in IB zelf), maar verschijnt nog steeds niet in de custom class in het info panel van de NSTableView die op mijn window ligt. :wacko:

Wat is nou de reden dat is daar niet verschijnt, ik snap hier werkelijk nix van :cry:

-- none --
NSTableView subclassen voor keyDown
25 maart 2005 - 10:25    reactie #8
geplaatst door: Bierdopje
Ik heb hetzelfde probleem als xylone. Ik kan NSTableView subclassen wat ik wil onder classes,
maar ik kan de subclass niet kiezen onder Custom Class van de NSTableView die op mijn window ligt.

Ik heb obj-c en java geprobeerd.

Als ik echter NSScrollView subclass kan ik die wel kiezen als een subclass bij NSTableView??  :wacko:
Maar die klasse zal wel niet alle NSTableView messages ontvangen.

Wat doen we verkeerd?? In veel artikelen op internet staat "Gewoon even je NSTableView subclasses"  :cry:

iMac DV SE G3 500, 30GB, 512MB RAM
iMac G5 17 1.8 SD, 80GB, 1GB RAM, BT, AP
Airport Express
NSTableView subclassen voor keyDown
25 maart 2005 - 11:17    reactie #9
geplaatst door: Reflex
de NSTableView is geencapsuleerd in een NSScrollView (drop maar eens een willekeurig object in je venster, en kies dan 'layout -> make subviews of -> scroll view')

iets soortgelijks hebben ze ook bij een NSTableView gedaan. Wat je dan doet, is je klikt dubbel op de scrollview, zodat de NSTableView actief wordt gemaakt, en dan kun je wel de custom class zetten :P comprende? ;)

ik wil toch nog stressen, dat ik betwijfel hoe handig het kan zijn als je met een arrow-down nieuwe rows toe gaat voegen... backspace is algemeen geaccepteerd tho

God has a hard on for Marines, because we kill everything we see. He plays His games, we play ours. To show our appreciation for so much power, we keep heaven packed with fresh souls. God was here before the Marine Corps, so you can give your heart to Jesus, but your ass belongs to the corps.
NSTableView subclassen voor keyDown
25 maart 2005 - 11:49    reactie #10
geplaatst door: xylone
Oh... dus je moet dubbelklikken op een NSTableView.... Waar staat dat gedocumenteerd!?!?!  :crazy:  :blink:  :wacko:

Ja nu doet ie het!

Thnx voor alle hulp/ideeen!!! :worship:

We kunnen verder!!!  :thumbs-up:

-- none --
NSTableView subclassen voor keyDown
25 maart 2005 - 11:50    reactie #11
geplaatst door: Bierdopje
Het werkt!!!!

Reflex bedankt, OLE OLE  :worship:

iMac DV SE G3 500, 30GB, 512MB RAM
iMac G5 17 1.8 SD, 80GB, 1GB RAM, BT, AP
Airport Express
NSTableView subclassen voor keyDown
25 maart 2005 - 12:29    reactie #12
geplaatst door: Reflex
@xylone: even voor de volledigheid; je dubbelklikt op een NSScrollView, waarin een NSTableView zit :) minor difference..

Waar dat gedocumenteerd staat mja, "An NSTableView displays data for a set of related records, with rows representing individual records and columns representing the attributes of those records. An NSTableView is usually displayed in an NSScrollView, like this:" :)

linkje

God has a hard on for Marines, because we kill everything we see. He plays His games, we play ours. To show our appreciation for so much power, we keep heaven packed with fresh souls. God was here before the Marine Corps, so you can give your heart to Jesus, but your ass belongs to the corps.