2012-10-11 33 views
6

मेरे पास दो कॉलम के साथ View Based सामग्री प्रकार NSTableView है।एनएसटीबल व्यू में किसी चयनित पंक्ति के अंदर तत्व कैसे प्राप्त करें?

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

एक चयनित पंक्ति के लिए, मैं एक विशेष स्तंभ के लिए चयनित पंक्ति के अंदर एक तत्व प्राप्त करना चाहते हैं:

मेरे वस्तुओं के रूप में इस संरचना कैसी है। विशेष रूप से, मैं चयनित पंक्ति के पहले कॉलम में Text Field प्राप्त करना चाहता हूं।

मैं तालिका दृश्य के लिए एक दुकान है और मैं चयनित पंक्ति के सूचकांक अब तक है, लेकिन है कि इसके बारे में बताया गया है:

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

मैं कैसे इस समस्या से निपटने के बारे में जा सकते हैं पर कोई भी विचार?

संपादित करें: यही वह है जो मैं करने की कोशिश कर रहा हूं: मैं टेक्स्ट फ़ील्ड को एक संपादन स्थिति में बदलना चाहता हूं और उस पर ध्यान केंद्रित करना चाहता हूं ताकि उपयोगकर्ता टेक्स्ट फ़ील्ड वैल्यू को संपादित करने के तुरंत बाद संपादित कर सकें

+1

इसका उपयोग करने के लिए आपको तत्वों तक पहुंचने की आवश्यकता है, इसे दिखाने के पहले शो लॉग सूची सबव्यू का सुझाव दें? यदि आपको केवल डेटा प्राप्त करने की आवश्यकता है तो आपको इसे NSTableViewDataSource में संग्रहीत करना चाहिए और फिर उस डेटासोर्स को NSTableView में प्रदान करना चाहिए। –

+0

@NathanVillaescusa: यह नियंत्रण में से एक को संशोधित करना है। विशेष रूप से, मैं टेक्स्ट फ़ील्ड को एक संपादन स्थिति में बदलना चाहता हूं और उस पर ध्यान केंद्रित करना चाहता हूं ताकि उपयोगकर्ता टेक्स्ट फ़ील्ड मान को जितनी जल्दी हो सके संपादित करना प्रारंभ कर सके। –

उत्तर

18

मैं लग रहा था अपनी समस्या हल करने के लिए:

- (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

महोदय, क्या आप कृपया मुझे एक combobox का एक चयनित आइटम प्राप्त करने में मदद कर सकते हैं, जिसे मैंने टेक्स्टफील्ड के कॉलम में से एक में जोड़ा है। कोई मदद महान है – Abin

0

पाठ क्षेत्र अपनी तालिका दृश्य सेल का केवल एक subview है, तो आपको निम्न कोड के साथ के लिए एक संदर्भ प्राप्त कर सकते हैं, और अपने पाठ का चयन करें, तो यह संपादन के लिए तैयार है:

-(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

उपयोग अपने सबव्यू प्राप्त करके तालिका दृश्य कक्ष के सभी तत्व प्राप्त कर सकते हैं।

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];