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
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 NSTableCellView
değ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
Nasıl fotoğraf kullanıcılar görünüm iç...
Android ve Dinamik görünüm Ekle / Kald...
Jilet dinamik model oluşturma kısmi gö...
Form tabanlı kimlik doğrulaması için k...
Nasıl iki JavaScript nesnelerin özelli...