SORU
21 EYLÜL 2011, ÇARŞAMBA


Görünüm tabanlı dinamik heights satırları ile NSTableView

Bu görünüm tabanlı bir NSTableView ile bir uygulama var. Bu tableview içinde, içerik word-wrap ile çoklu satır NSTextField etkin oluşan bu hücreler, satırlar var. Bu NSTextField metin içeriğine bağlı olarak, satır hücre görüntülemek için gereken boyutu değişir.

Yüksekliği dönmek için, ama yüksekliği sözcük kaydırma NSTextField kullanılan göre belirlenecektir. NSTableViewDelegate yöntemi -tableView uygulamak biliyorum:heightOfRow: Bu NSTextField sözcük kaydırma aynı şekilde NSTextField bu NSTableView genişliği tarafından belirlenen... nasıl dayanır.

...Ortalıkta. Sorum şu ki... ne bunun için iyi bir tasarım deseni mi? Kıvrık bir karmaşa olmanın rüzgarlar çalıştığım her şey yanlış gibi görünüyor. Beri TableView bilgi gerektirir yüksekliği hücrelerine yatıyordu onları... ve NSTextField ihtiyacı var bilgi var düzeni belirlemek için sözcük kaydırma... ve hücrenin ihtiyacı bilginin sözcük kaydırma belirlemek için bu yükseklik... dairesel bir karmaşa... ve götürüyor benideli.

Öneriniz var mı?

Eğer önemliyse, sonuçta da onları içinde metin ayarlamak için yeniden boyutlandırmak olacaktır düzenlenebilir NSTextFields olacak. Ben zaten görünüm düzeyinde çalışma var, ama henüz tableview hücreleri Yükseklikleri ayarlayın. Ben şekil alınca yüksekliği sorunu çözdü, çıkayım -noteHeightOfRowsWithİndexesChanged yöntemi hakkında bilgi veriniz tableview yüksekliği değişti... ama daha sonra soracağım temsilci için yüksekliği... dolayısıyla, benim quandry.

Şimdiden teşekkürler!

CEVAP
8 Kasım 2011, Salı


Bu bir tavuk ve yumurta sorunu. Bu tablo göz önüne alındığında bir görünüm bulunacağı belirlediğinden satır yüksekliğini bilmek gerekir. Ama zaten satır yüksekliğini anlamak için yanında olmak bir görünüm istiyorum. Hangisi önce gelir?

Cevap NSTableCellView fazladan tutmak için kullandığınız ne olursa olsun (ya da "cep görünümü") görünümü yüksekliğini ölçmek için sadece. tableView:heightOfRow: temsilci yöntemi, 'satır' ve NSTableCellView objectValue ayarlayın. için model erişin Sonra görünümün tablonun genişlik ve (ancak bunu yapmak istiyorum) bu görünüm için gerekli yüksekliği ve şekil genişliği ayarlayın. Bu değeri döndürür.

Arama temsilci yöntemi tableView:heightOfRow: viewForTableColumn:row: noteHeightOfRowsWithIndexesChanged: yok ! O kadar kötü ve büyük bir sıkıntıya sebep olacak.

Dinamik yükseklik update yapman gereken metin değiştirme (hedef/eylem) cevap ve bakış hesaplanan yüksekliğini hesaplamak. Şimdi, dinamik NSTableCellViewdeğişmez'nın yüksekliği sizin kullandığınız ne olursa olsun (ya da "cep görünümü"). Tablogerekirbu görüş çerçeve kontrol, ve eğer bunu denerseniz, tableview mücadele olacak. Yüksekliği hesaplanan nerede bunun yerine, metin alanı için hedef/eylem tablosu tek tek satır yeniden boyutlandırmak sağlayacak noteHeightOfRowsWithIndexesChanged:, Ara. Subviews üzerinde autoresizing maskesi kurulumu doğru (örneğin: NSTableCellView) subviews varsayarsak, her şeyin yolunda yeniden boyutlandırmak gerekir! Değilse, ilk subviews yeniden boyutlandırma maske şeyler doğru değişken satır Yükseklikleri ile almak için çalışmak.

noteHeightOfRowsWithIndexesChanged: varsayılan olarak hareket ettiğini unutma. O değil animasyon yapmak için:

[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:0];
[tableView noteHeightOfRowsWithIndexesChanged:indexSet];
[NSAnimationContext endGrouping];

PS: ben daha fazla soru Elma ilan için yığın taşması hocam cevap Dev.

PSS: görünüm NSTableView göre yazdım

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DavidParody

    DavidParody

    17 EKİM 2009
  • FPSRussia

    FPSRussia

    19 NİSAN 2010
  • KSI

    KSI

    25 Temmuz 2009