1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

CoreData und NSTableView heightOfRow => Warnung

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Duck Dodgers, 02.02.10.

  1. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    Ich habe ein Problem mit NSTableView und heightOfRow. Beim ersten Mal wenn diese Methode aufgerufen wird bekomme ich immer die Meldung:

    Warning: NSTableView/NSOutlineView variable row height code has detected re-entry. Avoiding a crash....

    Code:
    - (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row
    {
    	[ [ [ self arrangedObjects ] objectAtIndex: row ] valueForKey: @"display" ];
    	return 50;
    }
    
    Der code ansich macht so keinen Sinn, aber er soll nur zeigen was ich mache. Also sobald ich valueForKey (sonst nicht) aufrufe, kommt die Meldung. Sobald das App dann gestartet ist, bekomme ich dann keine Warnung mehr. Was bedeutet diese Warnung? Und was soll ich nun tun? Habe verschiede Beispiele im Netz gefunden die heightOfRow nutzen und dort ist es ähnlich in Verwendung.

    Danke für Eure Hilfe :)
     
  2. sumpfmonsterjunior

    sumpfmonsterjunior Morgenduft

    Dabei seit:
    17.03.05
    Beiträge:
    167
    Lässt sich so ins Blaue hinein zwar schwer sagen, aber vermutlich löst die display-Eigenschaft Deines Modells (?) ein redisplay Deines Tableviews aus (auch wenn Du nur lesend darauf zugreifst).
     
  3. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    "display" ist ein property, dass direkt im "Interface Builder" mit der TableColumn verbunden ist. Gibt es vielleicht eine Möglichkeit zu erkennen, ob die Tabelle schon aufgebaut ist? Anscheinend tritt das nur beim ersten Aufbau auf und vermutlich wird heightOfRow als erstes ausgeführt?
     
  4. sumpfmonsterjunior

    sumpfmonsterjunior Morgenduft

    Dabei seit:
    17.03.05
    Beiträge:
    167
    Poste mal den Code von display bitte
     
  5. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    display ist ein Transformable Attribute im DataModel und als

    @property (nonatomic, retain) NSMutableAttributedString *display;

    definiert. Mehr code gibt es nicht dazu.
     
  6. sumpfmonsterjunior

    sumpfmonsterjunior Morgenduft

    Dabei seit:
    17.03.05
    Beiträge:
    167
    Hast Du einen ArrayController abgeleitet?
    Code:
    ...
    [ self arrangedObjects ]
    ...
    
    Ganz unabhängig von Deinem Problem solltest Du das nicht tun.
    Vlt mal das Projekt posten?
     
  7. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    Ja ich habe eine eigene Klasse als NSArrayController für die Tabelle.

    Nein? Ok, dass wußte ich nicht! Wie komme ich an den Inhalt?


    Das ganze Projekt? Ist mittlerweile schon etwas größer. Was genau brauchst du ... musst du wissen?

    Code:
    @interface tabController : NSArrayController <NSTableViewDelegate>
    {
    ...
    }
    ...
    
    @end
    
    @implementation tabController
    
    ...
    - (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row
    {
    	[ [ [ self arrangedObjects ] objectAtIndex: row ] valueForKey: @"display" ];
    	return 50;
    }
    ...
    
    @end
    
     
    #7 Duck Dodgers, 02.02.10
    Zuletzt bearbeitet: 02.02.10
  8. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    Hallo sumpfmonsterjunior,

    hast du (oder jemand anderes) noch einen Tip für mich? Google gibt mir irgendwie auch keine vernünftige Hilfe :(
     
  9. Poljpocket

    Poljpocket Salvatico di Campascio

    Dabei seit:
    07.01.07
    Beiträge:
    432
    Wenn wir nicht wissen, wie dein Projekt aussieht, wie sollen wir denn bitte wissen, was wir brauchen, um dir zu helfen?

    Gruss ppocket
     
  10. sumpfmonsterjunior

    sumpfmonsterjunior Morgenduft

    Dabei seit:
    17.03.05
    Beiträge:
    167
    Wie schon weiter oben geschrieben kann ich nur vage Vermutungen anstellen, aber womöglich löst Dein ArrayController ein redisplay aus (evtl. auto-rearranges content etc).
    NSArrayController ist nicht zum Ableiten gedacht, packe die TableView-Delegate Methoden in einen eigenen Controller und gib diesem ein Outlet auf den ArrayController. Da vermischst Du zwei Sachen, die nicht zusammen gehören.

    Gruß, SumpfMonsterJunior
     
  11. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    @ppocket:
    ok verstehe. Hilft es dir, wenn ich hier mehrere 1000 Zeilen Code poste? Wenn ich weiß, welche Teile hilfreich sind, dann poste ich die gerne!

    @sumpfmonsterjunior:
    "Auto Rearrange Content" war beim Array Controller gesetzt :eek:

    Herzlichen Dank ... das war es :-D
     
    #11 Duck Dodgers, 07.02.10
    Zuletzt bearbeitet: 07.02.10
  12. sumpfmonsterjunior

    sumpfmonsterjunior Morgenduft

    Dabei seit:
    17.03.05
    Beiträge:
    167
    Tu Dir den Gefallen und ändere Dein Design so, dass Du nicht von NSArrayController ableitest, sondern das Tableview in einen eigenen Controller packst (entweder von NSObject oder NSViewController erbend).

    Dieser greift dann mittels eines Outlets auf den ArrayController zu.
     
  13. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    ok verstehe, werde ich abändern. Danke für deinen Hinweis.
     

Diese Seite empfehlen