Wie funktioniert ein UIButton hinzufügen zu UIToolBar programmgesteuert?
Habe ich die toolbar mit Hilfe von Interface-Builder, aber ich muss hinzufügen, die buttons zur Laufzeit /bedingt. Ich bekomme keine Fehler, aber meine dynamische buttons erscheinen nicht auf der Symbolleiste. Ich habe überprüft, dass arrayOfModulesScreens ist geladen, mit den Daten, die ich brauche. Zumindest, dass es funktioniert (:)). Muss ich hinzufügen, die Schaltflächen in einer UIView, dann fügen Sie die Ansicht der Symbolleiste? Nur denken outloud. Vielleicht gibt es ein besserer Ansatz, um mit zu beginnen? Vielen Dank im Voraus für alle Hinweise, die zu den führenden beheben.
CustomFormController.h
@interface CustomFormController : UIViewController {
UIToolbar *screensBar;
}
CustomFormController.m
EPData *epData = [[EPData alloc] init];
NSArray *screens = [epData loadPlistIntoArray:@"Screens"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"process_module_id == %@", process_modulesID];
NSArray *arrayOfModulesScreens = [screens filteredArrayUsingPredicate:predicate];
for(int i=0; i < [arrayOfModulesScreens count]; i++) {
NSDictionary *dictRow = [arrayOfModulesScreens objectAtIndex:i];
UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
[button setTitle:[dictRow objectForKey:@"screen_title"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
[screensBar addSubview:button];
}
InformationsquelleAutor iamtoc | 2011-08-16
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wirklich wollen, fügen Sie ein UIBarButtonItem (nicht ein UIButton) auf der Symbolleiste, erstellen Sie einfach eine oder mehrere UIBarButtonItems, lege Sie in ein NSArray (oder NSMutableArray), und weisen Sie dieses array die
items
- Eigenschaft der Symbolleiste. Sehen die UIBarButtonItem Dokumentation für details. Mit deinem code oben, das könnte in etwa so Aussehen:(Sie, natürlich, werden Sie dann brauchen, um Ihre
buttonClick:
zu erwarten, dass ein UIBarButtonItem statt einem UIButton).Wenn Sie wirklich wollen, setzen Sie einen UIButton gibt, müssen Sie zuerst wickeln Sie den UIButton in ein UIBarButtonItem, so etwas wie dieses:
Fügen Sie dann das Element in der Symbolleiste oben.
Als dafür, warum die buttons nicht angezeigt in deinem geposteten code, das problem ist, dass UIButton ist
buttonWithType:
erstellt eine Schaltfläche mit null Breite und null Höhe. Würden Sie benötigen, um die Größe der Schaltfläche (manuell oder durch die VerwendungsizeToFit
nach der Setzung der Titel), um ihn einzublenden. Nach dem fixieren, die, würden Sie dann sehen, dass die Tasten liegen alle übereinander in der linken oberen Ecke des übergeordneten Ansicht; Sie brauchen würde, um Sie manuell als angemessen.Das macht Sinn, warum gab es kein Bild zeigen. Vielen Dank für berühren, sowie die Bereitstellung einer besseren alternative.
InformationsquelleAutor Anomie
Ich glaube nicht, dass Sie ändern können, die
navigationController
direkt in Ihrem code wie.Ist ein sicherer Weg wäre der folgende:
InformationsquelleAutor Tri Nguyen
Symbolleiste Ansatz
Ein problem mit dem hinzufügen von
UIButton
zuUIToolBar
ist, dass die Breite der Schaltfläche und die Positionierung der Tasten ist schwer zu kontrollierenEinfacher Ansatz
Entfernen Sie die Symbolleiste und legen Sie eine
UIView
mit dem hintergrund Bild, das identisch ist mit Ihrer Symbolleiste. Nun können Sie dieUIButton
als eine Untersicht zu dieser Ansicht. Auf diese Weise haben Sie mehr Kontrolle über die Positionierung und die Breite der buttons. Auch Sie können andere Ansichten als gut.InformationsquelleAutor user1046037