Kapitel 7 NSTableView

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

  • Kapitel 7 NSTableView

    Moin,

    damit wäre ich durch. Nach Rezept koch ich offenbar super. Mit dem improvisieren hapert's wohl noch. Jetzt versuche ich die kleine Übung am Ende des Absatzes zu bewältigen, nämlich eigenständig Daten dem TableView hinzuzufügen.

    Dabei stellen sich mir einige Fragen:

    1. Wieso verbinde ich den TableView mit dem Objekt slide? Weil offenbar slide als diese "DataSource" dient. Es hieß, slide wird automatisch als DataSource angeboten. War auch so. Woran erkent Cocoa denn, dass die Klasse slide dazu kompatibel ist? Ich schätze daran, dass Kriterien wie, es ex. Eigenschaft wie Array, NSTableView und es ex. diese Methoden "numberOfRowsInTableView", "tableView:..." erfüllt sind. Okay.
    Da ich beim implementieren dieser Methoden diese nicht in der Header-Datei bekannt gebe, gehe ich davon aus, dass sie in NSObject soweiso schon implementiert sind. Scheint so zu sein, denn [super tableView...] wir mir angeboten.

    2. Jetzt war ich so pfiffig und kam auf die Idee, per (IBAction)addItem:(NSButton *)sender; einfach ein neues "TableObj"ect zu erzeugen und das dem Array hinzuzufügen. Ist natürlich klar, dass das nicht automatisch mit dem TableView synchronisiert wird.

    Heißt entweder (a) ich füge das neue Element jetzt manuel noch dem TableView hinzu, oder (b) ich synchronisiere das Array und das TableView.

    Okay, verstehe aber nicht wer hier wann welche methode ausführt. Verbinde ich TableView mit slide als DataSource, so wir beim Start 8x "objectValueForTableColum" ausgeführt. Ich gehe davon aus, dass durch numberOfRowsInTableView die anzahl der Zeilen bekannt sind und die Anzahl der Spalt per Voreinstellung. So geht das TableView Objekt jetzt Zelle für Zelle mit der Methode "(id)tableView:(NSTableView *)Table objectValueForTableColumn:(NSTableColumn *) Column row:(int)Row" durch und die entsprchnende Wert zu erhalten und schreibt sie in die Zellen.

    Na wie auch immer, ich verstehe nicht, was ich hier habe. Was hier wann wen aufrufen muss.

    Grüße,

    bauwerk
  • Soweit ich mich erinnere, soll das Kapitel 7 die Trennung von Modell, View und Controller verdeutlichen.

    Was musst der Controller also tun?
    * Objekt in dein Array einfügen
    * TableView Bescheid geben, dass es seine Daten neu laden sollte

    Du bist ziemlich fix beim Durcharbeiten.
    Liest und verstehst du die Kapitel auch?
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Na bis auf Kapitel 4 ging alles ganz gut durch bisher. Ach ja, ist man mal die Arbeitsintensität eines Mathestudiums gewohnt. :P

    Aber
    das mit dem TableView und der DataSource finde ich grad etwas unschön.
    Sehe ich das jetzt richtig, dass NSObject methoden bereitstellt um als
    DataSource für ein TableView zu fungieren?



    Also wenn ich
    jetzt diese Konstellation habe, wie schicke ich denn jetzt Nachrichten
    an das TableView? Wird es repräsentiert durch die NSTableView Property
    der Klasse slide (Dem Controller der als DataSource dient). (MVC wird
    übrigens erst in zwei Kapiteln richtig behandel.)


    GRüße,

    bauwerk



    ps.: Es ist die "zweite überarbeitete und stark erweiterte Auflage"

    pps.: Ah verstehe, ich brauche noch eine "Rückrichtung", die tView Property ist ein Outlet, das mit dem TableView noch verknüpft werden muss. Jetzt kann ich mit nem [tView reloadData] das ganze neu laden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von bauwerk () aus folgendem Grund: Weitere Erkenntnisse

  • Noch Fragen zum Outlineview

    Ich spiele grad etwas mit dem Outlineview herum. Es gibt ja ein Object der Model-Klasse in der DataSource-Klasse, das als Root Item fungiert.

    Bei XCode, z.B. im Group&Files Outline View habe ich aber scheinbar mehrere Outline Views wie Controls und Targets etc.

    Wie kirege ich das hin?

    Und nochwas: Wie kann ich eigentlich auf einen Doppelklick auf ein Item reagieren? Und z.B. auch die Aktion Editieren für den Doppelklick entfernen?

    Grüße,

    bauwerk