iOS - Größe UITableView Höhe programmgesteuert
Ich habe ein problem versuchen, programmgesteuert ändern der Höhe einer UITableView
gehostet in einem UIViewController
mit iOS5 und Storyboards. Die VC zeigt eine master/detail-Datensatz-Stil mit der UITableView
Anzeige der detail-Datensätze. Je nach Typ des master-Datensatz angezeigt, eine Gruppe von Schaltflächen, die notwendig werden können, an den Fuß des Bildschirms. Wenn die Tasten nicht benötigt werden, dann möchte ich die UITableView
zu erweitern, es ist die Höhe, um die Vorteile der verfügbaren Platz. Ich bin mit dem folgenden code :
CGRect tableFrame = [tableListView frame];
if (blnApprovalRec == YES)
tableFrame.size.height = 127;
else
tableFrame.size.height = 170;
[tableListView setFrame:tableFrame];
Dieser code wird aufgerufen, wenn die master-Aufzeichnung von änderungen, einschließlich, wenn der Bildschirm zuerst lädt in viewDidLoad
. Das problem ist, dass, wenn die VC geladen, die UITableView
Malt nicht mit der Größe angegeben - es Malt mit dem Standard-Größe von IB. Sobald der Benutzer verändert den master-Datensatz, so dass die Tabelle neu geladen wird, dann funktioniert alles Prima und die Größe der änderungen als erforderlich. Ich habe versucht, zu zwingen einen repaint mit setNeedsDisplay
, setNeedsLayout
und reloadData
aber keiner von Ihnen arbeitete.
Ist dieser code in eine Methode wie viewDidLoad?
InformationsquelleAutor Jonathan Wareham | 2012-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies geschieht, wenn die Tabelle-Ansicht geladen wird, aber es ist UI ist nicht immer aktualisiert. Bitte stellen Sie sicher, wenn Sie mit Nachdruck aufgerufen, in viewDidLoad oder viewWillAppear.
Hoffentlich ist Ihr dieser code wird in einer separaten Methode:
Wenn die Ansicht angezeigt zunächst können Sie die standardmäßig ausgewählte Wert aus dem Stammsatz.
Sie können festlegen, dass der Wert/Instanz in der aufrufenden Funktion in viewWillAppear.
Können Sie show-Methode-name und-code, wie dem Sie anrufen obigen code-Schnipsel gewaltsam?
InformationsquelleAutor Ankit Thakur
Können Sie die Größe UITableView programmatisch, aber Sie brauchen, um zu erstellen UITableView programmgesteuert zu. Nicht verwenden Storyboard.
Dies ist die richtige Antwort. Es ist schockierend, dass Sie immer noch nicht mit storyboards in Xcode 6.3
InformationsquelleAutor Jesdaloha Multimedia
Ich hatte das gleiche Problem, nur brauchte, um den code von
zu
InformationsquelleAutor mcniac
Dies ist schwierig, seine Größe schwer, Dinge wie diese dynamisch.
ich würde versuchen, "setNeedsLayout" Und "setNeedsDisplay" für Ihre Tabelle und Ihrem Bildschirm, um die Kraft neu.
Andere als das, ich würde storyboard es auf die minimale Größe und das code verwenden, um es zu erweitern.
Allgemein apple nicht wie uns, dies zu tun, Ihre Schaltflächen gezeichnet werden sollen, über die oben in der Ansicht in eine andere Ansicht, wenn das ist möglich.
Sorry, ich kann nicht genauer sein, aber ich habe die Lösung all dieser Probleme von mucking herum und mit hacks, und geben bis auf die Größenänderung und Dinge tun, re-designs. Bitte lassen Sie mich wissen, wie Sie gehen, obwohl 🙂
Auch sind Sie nach der docs und mit setFrame sind Sie nicht? Ich sage nur, dass nach der docs hat nicht funktioniert, für mich noch, wenn dynamially zu verändern. Zeichenansichten über die Oberseite der anderen Ansichten ist, wie ich frisiert Tasten auf tableviews in der Vergangenheit. Aber die wirkliche Lösung war das verwenden von Navigations-und tab-bar-Controller sowie tableviews - ich hatte zu tun, um zu vermeiden die Notwendigkeit, Größe dynamisch und Dinge bewegen.
InformationsquelleAutor FaddishWorm
Stellen Sie sicher, Sie setzen den Rahmen, nachdem die Tabelle geladen wurde.
Welche Methode Sie aufrufen, code?
InformationsquelleAutor Jonathan Plackett