Button/Label über Xcode erstellen und per Knopfdruck verstecken

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Button/Label über Xcode erstellen und per Knopfdruck verstecken

    Hallo,

    ich habe mal wieder ein Problem, bei dem ich extrem verzweifle!!

    Ich habe folgendes stark vereinfachtes Beispiel:

    in loadLabel() wird zunächst ein Frame erstellt und anschließend ein Label geladen und angezeigt (ohne Interface Builder). Dieses Label wird mit den Daten des Frames im View angezeigt.

    Mit den IBActions machan() und machaus() soll dieses Label angezeigt bzw. versteckt werden. Leider funktioniert das aber NUR mit dem Button (button), den ich im Interface Builder erstellt habe! Ich kann aber das UILabel nicht in der gleichen Methode erstellen, weil meine Methode am Ende mit einem NSTimer läuft, also würde man dann jede Taktung ein Objekt von UILabel erstellen und könnte diese nicht mehr ausblenden lassen!

    Quellcode

    1. -(void) loadLabel {
    2. //Frame für das Label
    3. CGRect frame;
    4. frame.origin.x = 50;
    5. frame.origin.y = 50;
    6. frame.size.width = 50;
    7. frame.size.height = 50;
    8. //Label erstellen und in das View laden
    9. UILabel *label = [[UILabel alloc] initWithFrame:frame];
    10. [self.viewForButton addSubview:label];
    11. }
    12. -(IBAction) machaus {
    13. //Der im IB erstellte Button lässt sich verstecken
    14. button.hidden = YES;
    15. //Das Label kennt er nicht, weil es in einer anderen Klasse erstellt wurde
    16. label.hidden = YES;
    17. }
    18. -(IBAction) machan {
    19. //analog zu machaus()
    20. button.hidden = NO;
    21. label.hidden = NO;
    22. }
    Alles anzeigen


    Vielen Dank für eure Hilfe! Ich komm einfach nicht drauf, hab schon jeden Mist versucht!

    LG Unikum
  • Gibt dem Label einen Tag [label setTag:100] und dann [[self.viewForButton viewWithTag:100]setHidden:YES] sollte funktionieren.

    Und warum machst du eigentlich das Label nicht auch im IB ?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ramo ()

  • Unikum schrieb:

    Quellcode

    1. -(void) loadLabel {
    2. //Frame für das Label
    3. CGRect frame;
    4. frame.origin.x = 50;
    5. frame.origin.y = 50;
    6. frame.size.width = 50;
    7. frame.size.height = 50;
    8. //Label erstellen und in das View laden
    9. UILabel *label = [[UILabel alloc] initWithFrame:frame];
    10. [self.viewForButton addSubview:label];
    11. }
    12. -(IBAction) machaus {
    13. //Der im IB erstellte Button lässt sich verstecken
    14. button.hidden = YES;
    15. //Das Label kennt er nicht, weil es in einer anderen Klasse erstellt wurde
    16. label.hidden = YES;
    17. }
    18. -(IBAction) machan {
    19. //analog zu machaus()
    20. button.hidden = NO;
    21. label.hidden = NO;
    22. }
    Alles anzeigen


    Vielen Dank für eure Hilfe! Ich komm einfach nicht drauf, hab schon jeden Mist versucht!

    Die Variable label in Zeile 11 ist eine lokale Variable und nur in der Methode loadLabel sichtbar. Die Variablen label in den Zeilen 20 und 27 haben nichts mit der Variablen in Zeile 11 zu tun. Das sind unterschiedliche Variablen.

    Michael
  • ramo schrieb:

    Gibt dem Label einen Tag [label setTag:100] und dann [[self.viewForButton viewWithTag:100]setHidden:YES] sollte funktionieren.

    Und warum machst du eigentlich das Label nicht auch im IB ?


    okay, ich versuch das mal...danke!

    Ich kann den nicht im IB erstellen. Ziel ist es, über eine externe Datei die Anzahl von Buttons einzulesen, die zu gewissen Zeitpunkten angezeigt und wieder ausgeblendet werden!

    Sprich, ich benötige eine unbekannte Anzahl an Buttons, was ich aber erst weiss, wenn die Daten eingeladen werden.

    Danke schonmal!
  • Michael schrieb:

    Die Variable label in Zeile 11 ist eine lokale Variable und nur in der Methode loadLabel sichtbar. Die Variablen label in den Zeilen 20 und 27 haben nichts mit der Variablen in Zeile 11 zu tun. Das sind unterschiedliche Variablen.


    Ja richtig, genau das ist mein Problem. Dass er die Variable aus Zeile 11 in den anderen Methoden nicht greifen kann, habe ich auch festgestellt, nur weiss ich nicht, wie ich das ändere. Und dem Wissen anderer Programmiersprachen nach, dachte ich immer, es müsse ja nur möglich sein, diese Variable in Zeile 11 als "public" zu deklarieren, um aus anderen Methoden Zugriff zu haben! ?(

    LG
  • Unikum schrieb:

    Ja richtig, genau das ist mein Problem. Dass er die Variable aus Zeile 11 in den anderen Methoden nicht greifen kann, habe ich auch festgestellt, nur weiss ich nicht, wie ich das ändere. Und dem Wissen anderer Programmiersprachen nach, dachte ich immer, es müsse ja nur möglich sein, diese Variable in Zeile 11 als "public" zu deklarieren, um aus anderen Methoden Zugriff zu haben! ?(

    Der Scope von Variablen wäre für Dich also noch ein Thema, mit dem Du Dich beschäftigen solltest. Von Properties hat Du hoffentlich auch schon mal was gehört?
    In diesem Fall, wo Du ja eine variable Anzahl von Buttons erzeugen willst, ist der Ansatz von ramo aber schon der richtige Weg.

    Michael