• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

NSTableView disable-Eigenschaft??

  • Ersteller newvil44
  • Erstellt am

newvil44

Gast
Hallo,

Wieder stehe ich vor einem Problem. Dieses mal geht es um eine NSTableView.
Ich habe in meinem Programm eine Authentifizierung eingebaut. Wenn die unlock ist, sollen alle Items auf der GUI auf setEnabled:NO gesetzt werden.

Nun habe ich auf der GUI ein NSTableView und habe mitbekommen das diese Klasse keine methode setEnable: besitzt. Wie kann man eine NSTableView auf disabled setzen?

Hab bereits es anders Probiert um events und Aktionen auf der NSTableView zu verhindern (WENN: SFAuthorizationView locked ist).
Um editierbarkeit auszuschließen habe ich folgendes gemacht:

int i = 0;
NSArray *columns = [_tabele tableColumns];

for( i = 0; i<[columns count]; i++)
{
[[columns objectAtIndex:i] setEditable:state];
NSLog(@"%@",[[columns objectAtIndex:i] description]);
}

Um die Selektierung der Spalten zu unterbinden mach ich das:
[_table setAllowsColumnSelection:state];

Weiterhin verwende ich die delegate-methode um das Selektieren innerhalb der NSTableView zu unterbinden.

- (BOOL)tableView:(NSTableView *)aTableView shouldSelectTableColumn:(NSTableColumn *)aTableColumn
{
if( [_authView authorizationState] == SFAuthorizationViewUnlockedState) return YES;
else return NO;
}

- (BOOL)selectionShouldChangeInTableView:(NSTableView *)aTableView
{
if( [_authView authorizationState] == SFAuthorizationViewUnlockedState) return YES;
else return NO;
}

Was mir noch fehlt ist die Sortierung der Header auszuschalten. Wie geht das. Mit bindings habe ich schon ne Möglichkeit gefunden. Aber die Sortierung soll ja nur deaktiviert sein wenn SFAuthorizationView locked ist. Gibt es ne Möglichkeit das über den Programmcode zu kontrollieren, oder kann man die NSTableView einfacher noch disablen??

Danke schon mal im voraus für eventuelle Hilfe :)
 

ifthenelse

Fießers Erstling
Registriert
07.12.06
Beiträge
129
Hallo,

Wieder stehe ich vor einem Problem. Dieses mal geht es um eine NSTableView.
Ich habe in meinem Programm eine Authentifizierung eingebaut. Wenn die unlock ist, sollen alle Items auf der GUI auf setEnabled:NO gesetzt werden.

Nun habe ich auf der GUI ein NSTableView und habe mitbekommen das diese Klasse keine methode setEnable: besitzt. Wie kann man eine NSTableView auf disabled setzen?

Mh, komisch, bei mir geht es.

NSTableView hat zwar keine, aber die SuperClass (NSControl) von NSTableView kennt setEnabled:/isEnabled: sehr wohl. Auch der Interface Builder bietet Dir ein "enabled" auf eine Table-View an... (Du musst dabei nur aufpassen, dass Du tatsächlich auch die Table-View und nicht das Scroll-View selektiert hast.)

Hab bereits es anders Probiert um events und Aktionen auf der NSTableView zu verhindern (WENN: SFAuthorizationView locked ist).
Um editierbarkeit auszuschließen habe ich folgendes gemacht:
...
Danke schon mal im voraus für eventuelle Hilfe :)

BTW: Du könntest auch noch (musst aber nicht) deine DataSource "abschalten" (einfach keine Daten mehr liefern), damit keine Daten mehr angezeigt werden. Es ist aber oftmals sinnvoll, diese eben aktiv zu halten, sonst ist ja Deine Tabelle einfach nur leer...

Gruss, Jörg
 
Zuletzt bearbeitet:

newvil44

Gast
Hmm ok... setEnable: hat NSTableView geerbt aber wenn ich es verwendet ergibt sich keine Reaktion und die Sortierung funktioniert dann auch noch.

Habe aber nach einigem herum probieren eine Lösung gefunden.
Habe eine Methode geschrieben die alle entsp. controls enable oder disable setzt, weiterhin ist in der Methode die bereits weiter oben erwähnte Schleife für das Zulassen der Editierbarkeit der Daten.

weiter hin habe ich folgende delegate-Methoden verwendet (NSTableView muss delegat zu File's Owner haben)

- (void)tableView: (NSTableView *)tableView didClickTableColumn: (NSTableColumn *)tableColumn
{
if( [_authView authorizationState] == SFAuthorizationViewLockedState)
{
[self enableControls:NO];
}
}

- (void)tableViewSelectionDidChange: (NSNotification *)aNotification
{
if( [_authView authorizationState] == SFAuthorizationViewLockedState)
{
[self enableControls:NO];
}
}

so konnte ich darauf reagieren wenn ein event erfolgt auf die TableView.. ist vielleicht nicht der eleganteste weg aber mit geringem aufwand.
 

Zettt

Doppelter Melonenapfel
Registriert
16.10.05
Beiträge
3.374
Mal was GANZ nebenbei drueck doch mal bitte den hier:
code.gif


Code:
if
then
else
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
Mal 'ne Frage, newvil44: Warum willst Du die Aenderung der Sortierreihenfolge (z.B. durch Klick auf die Kopfzeile) in solchen Faellen verbieten? Sortierung ist schliesslich keine Aenderung am Datensatz, sondern nur an dessen Darstellung, vergleichbar eher dem Schieben des Fensters auf dem Bildschirm von links oben nach rechts unten als der Aenderung eines Werts. :D

Und Zettt: Das kapier' ich nicht.
 

Zettt

Doppelter Melonenapfel
Registriert
16.10.05
Beiträge
3.374
Ich wollte damit darauf hinweisen, dass es in BBCode ein spezielles Tag gibt mit dem man Quellcode einfügen kann. Und das ist diese schöne Raute. Dann wird der Text auf schön angezeigt.
 

ifthenelse

Fießers Erstling
Registriert
07.12.06
Beiträge
129
Puh, und ich hab' schon darüber gegrübelt, was der Zettt von mir will ;)

Ja, Indentions sind was schönes. Da wird so mancher Code lesbarer – aber nicht immer lesbar!

P.S. newvil44: Du solltest die Namen der Member deiner (eigenen) Klassen besser nicht mit '_' beginnen. Gerade weil Apple das so macht, kann es hier Konflikte geben...

Gruss, Jörg