Mehrere UIButtons in einem UIView erstellen (ohne IB)

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

  • Mehrere UIButtons in einem UIView erstellen (ohne IB)

    Hallo,
    ich versuche mich in der Erstellung einer iPhone-App mit zwei UIViews. Beide UIView hat je einen eigenen Controller. Über einen SwitchViewController kann ich zwischen den View hin- und her springen. Die Views erstelle ich im Programm, also nicht mit dem IB.

    View2 enthält eine Reihe von UILabels und UIButtons, die ich in ViewDidLoad erstelle. Nun mein Problem - Wenn ich von View1 zu View2 switche, erscheinen kurz alle UIButtons in der Position 0,0 des Views, danach springen sie an die Positionen, die ich im Programmcode vorgegeben habe.

    Wie kann ich sicherstellen, dass die Buttons nach dem switchen direkt auf ihrer korrekten Position erscheinen, also das springen über den View vermieden wird. Bei View1 tritt das Problem nicht auf (hat ein UISegmentedControl, 3 UITextFields und ein UIImage (View2 hat 9 UIButtons, 3 UILabel und 1 UIImage).

    Danke für Eure Hilfe
    benlongbow
  • benlongbow schrieb:

    Die Views erstelle ich im Programm, also nicht mit dem IB.
    Warum verwendest Du keine NIBs?

    benlongbow schrieb:

    View2 enthält eine Reihe von UILabels und UIButtons, die ich in ViewDidLoad erstelle.
    Den View solltest Du in loadView erstellen aber ohne die Methode der Superklasse aufzurufen.

    benlongbow schrieb:

    Nun mein Problem - Wenn ich von View1 zu View2 switche, erscheinen kurz alle UIButtons in der Position 0,0 des Views, danach springen sie an die Positionen, die ich im Programmcode vorgegeben habe.
    Wie positionierst Du die Buttons?
    „Meine Komplikation hatte eine Komplikation.“
  • Die Buttons lege ich wie folgt an:

    Quellcode

    1. UIButton *push15 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    2. push15.frame = CGRectMake(255, 26, 52, 37);
    3. push15.titleLabel.font = [UIFont boldSystemFontOfSize:20];
    4. [push15 setTitle:@"15" forState:UIControlStateNormal];
    5. [push15 setTag:15];
    6. [push15 addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
    7. [self.view addSubview:push15];

    ich hatte mir von der Programmierung der Buttons mehr Flexibilität versprochen, als bei der Verwendung des IB. Vielleicht ein Fehler?

    Wenn ich die Buttons in loadView anlege und dabei auf [super loadView] verzichte, stürzt das Programm ab!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von benlongbow () aus folgendem Grund: Nachtrag

  • Dein Fehler muss irgendwo anders liegen. Ich mache das auch, daß ich im viewiDidLoad() viele meine UI Elemente anlege/verändere etc und das geht wunderbar. Veränderst Du die UI Elemente noch irgendwo anders ? Vlt irgendwas mit OrientationChanged oder so ? Ansonsten zeig mal wie Du zwischen den Views switched.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • benlongbow schrieb:

    ich hatte mir von der Programmierung der Buttons mehr Flexibilität versprochen, als bei der Verwendung des IB. Vielleicht ein Fehler?

    Ich benutze ausschließlich den Interface Builder. Die paar Sachen, die ich zusätzlich im Code machen muss, fallen da kaum in's Gewicht.

    Dein Problem könnte mit der Größenanpassung des Views zusammenhängen.
    „Meine Komplikation hatte eine Komplikation.“
  • Danke für die Antworten!

    Ich habe auf den IB umgestellt und damit auch keine Probleme mehr. Ich habe eventuell noch eine Erklärung für das Problem - vor den Buttons habe ich ein UIImage geladen, dass den gesamten View füllt. Die Buttons liegen also auf dem Image - Ob es daran liegt, werde ich ein anderes mal austesten.