Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Eigenschaften von Objekten erfragen

Eigenschaften von Objekten erfragen

hobbittt01.10.1117:43
Hallo,

ich möchte herausfinden, ob meine UIPickerView versteckt ist oder nicht (für eine if-Anweisung). Hierfür habe ich Folgendes versucht:

UIPickerView *picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0f, 250.0f, 320.0f, 200.0f)];
    picker.delegate = self;
    picker.dataSource = self;
    picker.showsSelectionIndicator = YES;
    
    
    if (meinPicker.hidden == YES) {
        
    [self.view addSubview:picker];
    } else {
    
        [picker removeFromSuperview];
        
    }


Programm läuft, aber beim buttonPressed: passiert rein garnichts. Lasse ich die if-Anweisung weg und schreibe nur:

[self.view addSubview:picker];

klappt's.

Jetzt wollte ich vorher eine Variable einführen, ich versuche es mal so aufzuschreiben, dass Ihr wisst, was ich meine. Ich brauche aber den richtigen Code:

BOOL *isPickerHidden = meinPicker.hidden ? YES , NO;

Bitte die letzte Zeile verbessern, dann bin ich froh.

Danke!
0

Kommentare

yan.kun056701.10.1119:26
Lies doch mal die Developer Doku zu dem Property Hidden bestimmt nicht automatisch, ob ein View sichtbar ist oder nicht, sondern dadurch wird festgelegt, ob das View sichtbar seien soll. Default mäßig nach dem Erstellen der Instanz wird das Property auf No gesetzt. Was du willst ist:

if ([meinPicker superview] == nil) {
  [self.view addSubview:meinPicker];
} else {
  [meinPicker removeFromSuperview];
}

Und:

BOOL *isPickerHidden = meinPicker.hidden ? YES , NO;

Ist gleich zweifach falsch.

1) Wieso machst du aus einem einfachen Typen (bool) einen Pointer? Das brauchst du nicht.
2) Der ternary-Operator sieht so aus:

result = ist das wahr ? ja : nein;
0
MacMark
MacMark01.10.1123:03
Die coolen Kids schreiben
if ([meinPicker superview]) {…
Die Abfrage auf nil macht die Objective-C Runtime implizit. Oder auch
if (meinPicker.superview) {…
Liest sich am elegantesten.
„@macmark_de“
0
MacMark
MacMark01.10.1123:10
Wenn er keinen Superview hat, ist er nicht in der View-Hierachie, also so oder so nicht sichtbar, egal was in hidden steht. Hidden hat erst die Chance über Sichtbarkeit zu bestimmen, wenn der View in der View-Hierachie irgendwo eingehängt ist.
„@macmark_de“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.