UITableView und ImageView

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

  • UITableView und ImageView

    Hi Leute super Forum hier, habe schon einige hilfreichen Tipps gefunden nur diesmal finde ich keinen Lösungsansatz.
    Also ich bin noch recht neu in diesem Thema, ich komm so aus der Java-Ecke und habe auch hin und wieder einige Verständnisprobleme der Syntax :D

    Also ich spiel gerade etwas mit Tabellen rum und nutze als Style für die Zellen UITableViewCellStyleSubtitle und füge auch jeweils ein kleines Bild hinzu ( [cell.imageView setImage]).

    So jetzt zu meinem Problem: Die Bilder haben alle unterschiedliche Größen und verschiebt somit den "Textinhalt" meiner Zellen und ich bekomm da einfach keinen Lösungsansatz hin.In den beiden Büchern steht leider diesbezüglich auch nichts.
    Ich bräuchte nur nen kleinen Denkanstoß. Geht das vlt nur wenn man eigene Zellen/Zelllayouts erstellt?
    Dann noch ne Zweite Frage: einige Apps haben am Ende von einer Tabelle meist Zellen (Weitere Inhalte laden) und dann wird der Rest der Tabelle angezeigt. Hat dieses "Verfahren" ein bestimmten namen nach dem ich googeln kann um mir das mal anzuschauen.
    Vielen Dank schonmal für die Tipps und Denkanstöße.
    Gruß XertoX
  • XertoX schrieb:

    Ich bräuchte nur nen kleinen Denkanstoß. Geht das vlt nur wenn man eigene Zellen/Zelllayouts erstellt?

    Ja, mit den vorgegebenen Layouts kommst Du hier meistens nicht weiter. Die machen, was sie wollen.

    XertoX schrieb:

    Dann noch ne Zweite Frage: einige Apps haben am Ende von einer Tabelle meist Zellen (Weitere Inhalte laden) und dann wird der Rest der Tabelle angezeigt. Hat dieses "Verfahren" ein bestimmten namen nach dem ich googeln kann um mir das mal anzuschauen.

    Nicht, dass ich wüsste. Nimm dafür eine Zelle und wenn die selektiert wird, lädst Du die Daten nach.
    „Meine Komplikation hatte eine Komplikation.“
  • Für ein gleichmäßiges Layout mit einer Standard Cell musst Du für die anzuzeigenden Bilder natürlich eine einheitliche Größe verwenden.

    Alternativ musst Du eine Custom Class von UITableViewCell erstellen und das Layout z.B. durch überschrieben der Methode layoutSubviews anpassen.

    macmoonshine schrieb:

    Nicht, dass ich wüsste. Nimm dafür eine Zelle und wenn die selektiert wird, lädst Du die Daten nach.

    Alternativ kannst Du bei dem TableView auch einen tableFooterView z.B. mit einem Button verwenden.
  • Vielen Dank für die Antworten, ich habe es jetzt über Customcells gelöst.
    Jetzt steh ich vor nem neuen Problem.
    Der Inhalt meiner Zellen ist ein Bild und Text der über das Internet geladen wird.
    Wenn jetzt die Tabelle gescrollt wird, stürzt es ab. Ich lade innerhalb der cellForRowAtIndexPath die Daten aus dem Netz.
    Bei der "Initialisierung" der Tabelle geht das noch gut. Erst beim Nachladen/Neuzeichnen der anderen Zellen gibt es Probleme.
    Ist ja auch klar was soll man anzeigen, wenn man wenn man noch nichts hat. Darum meine Frage.
    So Platzhalter die angezeigt werden, bis die Daten aus dem Internet geladen sind. Gibt es sowas?
    Oder generell ne Methode mit der Ich überprüfen kann ob die Daten fertig geladen wurden? Ich habe bis jetzt noch nichts gefunden, vlt such ich auch nur wieder an den falschen Stellen.
    Vielen Dank schonmal
    Gruß XertoX

    Vlt habe ich doch schon etwas.
    ScrollViewDidEndDecelerating <= damit schauen wann nicht mehr gescrollt wird.
    IndexPathsForVisibleRows <= Das soll irgendwie ne Liste der sichtbaren Zellen wiedergeben.

    Vlt kann ich die Zellen erst "Grundeinichten" und dann die neuen nachträglich laden und die Zabelle aktualisieren. :?: Oder so :?:

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

  • Jetzt mal ganz ehrlich.

    Ohne Dir etwas böses unterstellen zu wollen aber das was Du da machst ist das was anscheiend total Mode ist und 90% alle Anfänger tun. Du hast ein Problem, welches eigentlich für Deinen Skull viel zu kompliziert ist, und deshalb suchst Du Dir im Netz ein möglichst genau auf Deine Bedürfnisse zugeschnittenes Tutorial das du nur mit Copy und Paste in dein Projekt packen must.

    Ich habe mir den GDC Code kurz angesehen und ich muss sagen ich kapieren den so nicht auf die Schnelle. DU hast den verstanden ?

    Wenn nein, dann holst Du dir eine BlackBox in Deinen Code von der Deine App in Zukunft komplett abhängig ist und die du niemals modifizieren kannst oder anpassen ohne Angst zu haben das dann nichts mehr geht.

    Warum gehst du nicht den Weg den Dan Dir genannt hast, und schaust dir das Apple Demo mal ein paar Tage an, verstehst was da gemacht wird, schreibst dann auf dem Wissen einen eigenen Code und erzeugst Daraus deine App?

    Dadurch das du es Dir jetzt so leicht machst, wird es später nur umso schwerer. Denn kapieren musst du es so oder so irgendwann

    Ich habe mir so einen Code übrigens mal komplett selber gemacht aus einem eigenen Konzept heraus. Ist ja auch kein Hexenwerk.
    Ein ganz einfacher weg z.B. ist:

    Dann machst du eine Operation Queue. In diese Queue hängst du im cellForRow einfach eine Operation, welche die URL des Bildes und den Zeiger auf das ImageView bekommt.
    Ist das Bild im Hintergrund geladen, setzt du es ins ImageView und machst ein needDisplay des ImageView. Fertig. Dabei must du natürlich aufpassen das das ImageView auch noch besteht wenn das Bild fertig geladen ist, aber das kann man im einfachsten Fall durch eine retain property im Operation Code machen.
    Das wäre einfach mal der einfachste Weg sowas zu realisieren. Das kann man dann weiter optimieren, da in diesem Fall natürlich viel zu viele Bilder geladen werden wenn man schnell durchschollt z.B. Aber für einen ersten Schritt wäre das ein einfacher Code der funktioniert und den DU vor allen selber geschrieben und verstanden hast.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Ich würde die GCD Lösung ehrlich gesagt nicht als komplizierter betrachten.
    Das ist doch nur ein Wechsel in eine async queue und nach dem Laden eben wieder das setzen der UI Elemente im Mainthread.

    Und mit GCD ist das IMO am übersichtlichsten und am einfachsten,
    da alles was zusammen gehört eben auch zusammen bleibt innerhalb der einen Methode.
    Würde mir dazu auf alle Fälle mal das WWDC Video zu Grand Centrals Dispatch anschauen, ganz ohne das gundlegende Prinzip zu kennen ist es natürlich schwer.

    Man muss Blocks aber nicht zu 100% verstanden haben um das erstmal einzusetzen.
    Ich war mir auch nicht komplett bewusst wie der Aufbau eines Blocks mit allen Syntaxmöglichkeiten funktioniert, oder wie man so etwas in eigenen Methoden verwendet
    als ich das erste mal blockbasierende View Animations oder GCD verwendet habe.

    Der Aufbau ist ja immer der Selbe und welche Parameter man austauschen muss ist einfach, sobald man das Grundprinzip mit den Queues verstanden hat.
    Xcode hat ja mittlerweile sogr schon vorgefertigte Snippets für einiges davon, so dass man nur noch die Variablen belegen muss.
  • Tobse001 schrieb:

    Ich würde die GCD Lösung ehrlich gesagt nicht als komplizierter betrachten.
    Das ist doch nur ein Wechsel in eine async queue und nach dem Laden eben wieder das setzen der UI Elemente im Mainthread.


    das ist richtig


    Und mit GCD ist das IMO am übersichtlichsten und am einfachsten,
    da alles was zusammen gehört eben auch zusammen bleibt innerhalb der einen Methode.


    das mag sein


    Man muss Blocks aber nicht zu 100% verstanden haben um das erstmal einzusetzen.


    Was sind schon 100%. Aber ich finde diese Blocks extrem komplex. Und ich denke nicht das es Sinn macht sich damit zu beschäftigen wenn man noch nicht mal die einfachen Dinge verstanden hat, wovon ich beim dem TO jetzt einfach mal ausgehen.
    Und deshalb denke ich nicht das er mal eben genug davon verstehen wird das es ausreichend wäre. Aber eventuell irre ich mich da ja auch total.
    Deshalb würde ich, auch eben zu Übungszwecken den "Konservativen" Weg vorziehen. Ist der Unterschied zwischen einer OP und einer Antibiotika-Behandlung. Das eine geht schnell, braucht man aber guten Skill, das andere dauert länger, geht aber auch zu Hause. Das Ergebnis ist meistens das selbe. Man ist gesund :)

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)