#014: Der UITableView
(41:46 Minuten)
Wir erklären, wie ein TableView dennoch zügig auf das iPhone gelangt und wie man seine Größe und Position verändern kann, um ihn schlussendlich mit Daten zu befüllen.
Im diesen Zuge lernt ihr außerdem, wie sich das Koordinatensystem von Views, Subviews und Superviews verhält, und was das überhaupt ist. Und dann benutzen wir noch ganz subtil unser erstes Array.
Eine vollgepackte Folge also. Wir wünschen euch viel Spaß!
Kommentar hinzufügen
14. s710 am 16. May 2010, 18:50 Uhr
Aus der Doku noch ne Alternative, scheint bei mir den gleichen Effekt zu haben wie das setzen des view-Frames:
wantsFullScreenLayout
A Boolean value indicating whether the view should overlap the status bar.
@property(nonatomic, assign) BOOL wantsFullScreenLayout
Discussion
When a view controller presents its view, it normally shrinks that view so that its frame does not overlap the device’s status bar. Setting this property to YES causes the view controller to size its view so that it fills the entire screen, including the area under the status bar. (Of course, for this to happen, the window hosting the view controller must itself be sized to fill the entire screen, including the area underneath the status bar.) You would typically set this property to YES in cases where you have a translucent status bar and want your view’s content to be visible behind that view.
If this property is YES, the view is not resized in a way that would cause it to overlap a tab bar but is resized to overlap translucent toolbars. Regardless of the value of this property, navigation controllers always allow views to overlap translucent navigation bars.
The default value of this property is NO, which causes the view to be laid out so it does not overlap the status bar.
Aus der Doku noch ne Alternative, scheint bei mir den gleichen Effekt zu haben wie das setzen des view-Frames:
wantsFullScreenLayout
A Boolean value indicating whether the view should overlap the status bar.
@property(nonatomic, assign) BOOL wantsFullScreenLayout
Discussion
When a view controller presents its view, it normally shrinks that view so that its frame does not overlap the device’s status bar. Setting this property to YES causes the view controller to size its view so that it fills the entire screen, including the area under the status bar. (Of course, for this to happen, the window hosting the view controller must itself be sized to fill the entire screen, including the area underneath the status bar.) You would typically set this property to YES in cases where you have a translucent status bar and want your view’s content to be visible behind that view.
If this property is YES, the view is not resized in a way that would cause it to overlap a tab bar but is resized to overlap translucent toolbars. Regardless of the value of this property, navigation controllers always allow views to overlap translucent navigation bars.
The default value of this property is NO, which causes the view to be laid out so it does not overlap the status bar.
13. Tueti87 am 18. Nov 2009, 17:13 Uhr
Stimmt, ihr habt Recht.... wenn ich eine solche Section einfüge und alles von Hand mache, ist es auch 0,0 - also eure ist die richtige Lösung - war ich wohl zu voreilig ;-)
Man lernt eben nie aus!
Gruß
Tueti
Stimmt, ihr habt Recht.... wenn ich eine solche Section einfüge und alles von Hand mache, ist es auch 0,0 - also eure ist die richtige Lösung - war ich wohl zu voreilig ;-)
Man lernt eben nie aus!
Gruß
Tueti
12. Tueti87 (tueti87.wordpress.com) am 18. Nov 2009, 16:57 Uhr
Sehr gutes Tutorial...
Eure Frage wegen dem grauen Balken:
Dort ist eigentlich Platz für einen Header, also für diesen kleinen grauen oder blauen Streifen, der z.B. im Adressbuch zu sehen ist.
Der Platz ist standardmäßig dort gesetzt.
Sehr gutes Tutorial...
Eure Frage wegen dem grauen Balken:
Dort ist eigentlich Platz für einen Header, also für diesen kleinen grauen oder blauen Streifen, der z.B. im Adressbuch zu sehen ist.
Der Platz ist standardmäßig dort gesetzt.
11. WernerD am 15. Nov 2009, 23:35 Uhr
hab grad die erste Folge hinter mir, nachdem ich bei einem anderen Tutorial mit TableView-Objekt und delegate gescheitert und über Eurer Tutorial gegoogelt bin. Kann nur sagen 1*. Ihr macht das wirklich gut.
So kurzweilig hab ich noch in keinem Seminar gesessen. Vor allem wie Ihr in dem kurzen Code die Fallstricke und Hintergründe beleuchtet. Freu mich schon auf die Umsetzung und die nächsten Folgen.
Dankeschön
hab grad die erste Folge hinter mir, nachdem ich bei einem anderen Tutorial mit TableView-Objekt und delegate gescheitert und über Eurer Tutorial gegoogelt bin. Kann nur sagen 1*. Ihr macht das wirklich gut.
So kurzweilig hab ich noch in keinem Seminar gesessen. Vor allem wie Ihr in dem kurzen Code die Fallstricke und Hintergründe beleuchtet. Freu mich schon auf die Umsetzung und die nächsten Folgen.
Dankeschön
10. ingo am 12. Nov 2009, 13:09 Uhr
Hi ChristianS,
da wirst Du für OS 2 kompiliert haben, da war das noch anders ;)
Hi ChristianS,
da wirst Du für OS 2 kompiliert haben, da war das noch anders ;)
9. ChristianS am 12. Nov 2009, 11:57 Uhr
Hallo Kolleschn!
Ich musste folgende Korrektur im Coding des TableViewController.m vornehmen, da ich ansonsten unverständliche Fehler beim Compilieren bekam:
Methode: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
statt der offiziellen Version:
cell.textLabel.text = [dataArray objectAtIndex:indexPath.row];
schrieb ich:
cell.text = [dataArray objectAtIndex:indexPath.row];
Damit ließ sich das Programm bei mir Compilieren und Starten. textLabel kannte xCode irgendwie nicht. Bin noch auf xCode 3.1.2...
Ach noch was: bei dem seltsamen grauen Bereich vom TableView tippe ich auf einen durchaus beabsichtigten Header-Bereich, den braucht man ja auch in vielen TableView-Anwendungen. Wat meint Ihr?
Lg
Christian
Hallo Kolleschn!
Ich musste folgende Korrektur im Coding des TableViewController.m vornehmen, da ich ansonsten unverständliche Fehler beim Compilieren bekam:
Methode: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
statt der offiziellen Version:
cell.textLabel.text = [dataArray objectAtIndex:indexPath.row];
schrieb ich:
cell.text = [dataArray objectAtIndex:indexPath.row];
Damit ließ sich das Programm bei mir Compilieren und Starten. textLabel kannte xCode irgendwie nicht. Bin noch auf xCode 3.1.2...
Ach noch was: bei dem seltsamen grauen Bereich vom TableView tippe ich auf einen durchaus beabsichtigten Header-Bereich, den braucht man ja auch in vielen TableView-Anwendungen. Wat meint Ihr?
Lg
Christian
8. Andreas am 25. Oct 2009, 00:05 Uhr
Statt dem Hilfskonstrukt mit dem viewFrame kann auch direkt auf die Punkte zugegriffen werden:
self.view.frame.origin.x = 0;
Statt dem Hilfskonstrukt mit dem viewFrame kann auch direkt auf die Punkte zugegriffen werden:
self.view.frame.origin.x = 0;
7. flexo am 20. Oct 2009, 12:47 Uhr
Oder anders formuliert: gerne würde ich aus dem TableDemoViewController den TableViewController veranlassen die Daten neu einzulesen. Vielleicht geht dies auch anders als mit reloadData?
Oder anders formuliert: gerne würde ich aus dem TableDemoViewController den TableViewController veranlassen die Daten neu einzulesen. Vielleicht geht dies auch anders als mit reloadData?
6. flexo am 20. Oct 2009, 11:16 Uhr
Hallo
Zuerst: vielen Dank für den super Podcast!
Nun habe ich eine Frage:
Man kann ja auch einen UITableViewController mit dem IB erstellen. Dabei verknüpft man dann das delegate und die dataSource mit dem gewünschten Controller um dann ein [bla reloadData]; aufzurufen (dies klappt alles wunderbar).
Wenn man die UITableView jedoch selber anlegt kann man ja keine Verknüpfung erstellen im IB -> dataReload steht nur im TableViewController zur Verfügung. Man müsste also das delegate & dataSource mit TableDemoViewController verknüpfen.
Versuche dies jetzt (mit Google) schon einige Zeit ohne Erfolg.
Es müsste ja so in der Art sein: tableViewController.delegate = self; (was nicht geht - weil tableViewController ein Objekt ist, jedoch kein UITableView?)
Hallo
Zuerst: vielen Dank für den super Podcast!
Nun habe ich eine Frage:
Man kann ja auch einen UITableViewController mit dem IB erstellen. Dabei verknüpft man dann das delegate und die dataSource mit dem gewünschten Controller um dann ein [bla reloadData]; aufzurufen (dies klappt alles wunderbar).
Wenn man die UITableView jedoch selber anlegt kann man ja keine Verknüpfung erstellen im IB -> dataReload steht nur im TableViewController zur Verfügung. Man müsste also das delegate & dataSource mit TableDemoViewController verknüpfen.
Versuche dies jetzt (mit Google) schon einige Zeit ohne Erfolg.
Es müsste ja so in der Art sein: tableViewController.delegate = self; (was nicht geht - weil tableViewController ein Objekt ist, jedoch kein UITableView?)
5. Allan am 18. Oct 2009, 22:19 Uhr
@BigPun
bist du der Spaßvogel der im osxe-forum geschrieben hat?
hoffentlich passiert so etwas nicht noch einmal (also die geschichte im itnues store)...
@BigPun
bist du der Spaßvogel der im osxe-forum geschrieben hat?
hoffentlich passiert so etwas nicht noch einmal (also die geschichte im itnues store)...
4. BigPun am 18. Oct 2009, 18:52 Uhr
Richtig gut gemacht :D danke für eure mühen
Könnt ihr bitte, nicht vergessen, eine search bar mit ein zu bauen wenn ihr den Tableview weiter baut.
danke lg
on twitter:@bigpun187
Richtig gut gemacht :D danke für eure mühen
Könnt ihr bitte, nicht vergessen, eine search bar mit ein zu bauen wenn ihr den Tableview weiter baut.
danke lg
on twitter:@bigpun187
3. Noch ein Manuel am 18. Oct 2009, 17:45 Uhr
Werds mir gleich mal anschaun :)
(aber leider kann ich es noch nicht bei iTunes runterladen)
lg
Manu
Werds mir gleich mal anschaun :)
(aber leider kann ich es noch nicht bei iTunes runterladen)
lg
Manu
2. Manuel am 18. Oct 2009, 17:43 Uhr
Ja, ich finde auch, dass es wieder eine Supersendung war und ich freu mich schon sehr aufs Forum!
Manuel
Ja, ich finde auch, dass es wieder eine Supersendung war und ich freu mich schon sehr aufs Forum!
Manuel
1. Yss am 18. Oct 2009, 15:07 Uhr
Mal wieder super Folge. Endlich komme ich mit dem TableView klar ;-)
Macht weiter so!
Mal wieder super Folge. Endlich komme ich mit dem TableView klar ;-)
Macht weiter so!
http://www.mac-talk.eu/entwickler/71-videotutorials-zu-objective-c.html