2012-10-11 17 views
6

İki sütun içeren bir NSTableView içerik türü View Based var.NSTableView'da seçilen bir satırın içindeki öğeler nasıl alınır?

Table View 
    Table Column 
     Table Cell View 
      Text Field 
    Table Column 
     Table Cell View 
      Popup Button 

Seçilen satır için Belirli bir sütun için seçilen satır içinde bir elemanı almak istiyorum şu şekildedir:

Benim nesneleri yapılandırılmıştır. Özellikle, seçilen satırın ilk sütununda Text Field almak istiyorum.

ben tablo görünümü bir çıkış var ve bugüne kadar seçilen satırın dizini var, ama hepsi bu: Bu sorunla mücadele konusunda gidebilir nasıl

- (void)getSelectedTextField 
{ 
    NSInteger selected = [tableView selectedRow]; 
} 

Herhangi bir fikir?

Düzenle10: Yapmaya çalıştığım şey şu: Metin alanının düzenleme durumunda olmasını ve üzerine odaklanmak istiyorum, böylece kullanıcı seçildikten sonra metin alanı değerini düzenlemeye başlayabilir metin alanı tablo görünümü hücrenin yalnızca subview ise

+1

Öğelere erişmek için ihtiyacınız olan şey nedir? Verileri almanız gerekiyorsa, bir NSTableViewDataSource içinde saklamanız ve daha sonra bu veri kaynağını NSTableView'a sağlamanız gerekir. –

+0

@NathanVillaescusa: Kontrollerden birini değiştirmek. Özellikle, düzenleme alanında olması için metin alanını değiştirmek istiyorum ve kullanıcı, seçildikten sonra metin alanı değerini düzenlemeye başlayabilsin. –

cevap

18

Kendi problemimi çözdüm:

- (void)getSelectedTextField 
{ 
    NSInteger selected = [tableView selectedRow]; 

    // Get row at specified index 
    NSTableCellView *selectedRow = [tableView viewAtColumn:0 row:selected makeIfNecessary:YES]; 

    // Get row's text field 
    NSTextField *selectedRowTextField = [selectedRow textField]; 

    // Focus on text field to make it auto-editable 
    [[self window] makeFirstResponder:selectedRowTextField]; 

    // Set the keyboard carat to the beginning of the text field 
    [[selectedRowTextField currentEditor] setSelectedRange:NSMakeRange(0, 0)]; 
} 
+1

Efendim, metin alanından oluşan bir kolonda eklediğim bir açılan kutunun seçili bir öğesini almak için bana yardımcı olabilir misiniz? Herhangi bir yardım harika – Abin

0

, aşağıdaki kodu ile bir referansı almak ve onun metni seçin, bu nedenle düzenleme için hazır olabilir: Ben görünüyordu

-(void)tableViewSelectionDidChange:(NSNotification *)notification { 
    NSInteger row = [notification.object selectedRow]; 
    NSTextField *tf = [[[notification.object viewAtColumn:0 row:row makeIfNecessary:NO]subviews] lastObject]; 
    [tf selectText:tf.stringValue]; 
} 
3

Kullanmak, alt görünümü alarak tablo görünümü hücresinin tüm öğelerini alabilir. Kullanmadan önce show log listesi alt sayfasını önerme

NSInteger index = [self.tableViewFiles selectedRow]; 

// Get row at specified index of column 0 (We just have 1 column) 
NSTableCellView *cellView = [self.tableViewFiles viewAtColumn:0 row:index makeIfNecessary:YES]; 

// Get row's checkBox (at index 0, textFields is 1,2) 
NSButton *checkBox = [[cellView subviews] objectAtIndex:0]; 
İlgili konular