मैं द्वारा दो अलग एनएसटीबल व्यू का उपयोग करके ऐसा करने में सक्षम था जिसमें उनके एनएसएसक्रॉल व्यू की स्क्रॉलिंग सिंक्रनाइज़ है। एकाधिक स्क्रॉल व्यू (सटीक सबक्लास कोड के साथ) को सिंक्रनाइज़ करने के तरीके को जानने के लिए Scroll View Programming Guide for Mac - Synchronizing Scroll Views
मेरे पास groupTableView है जिसमें एक कॉलम है और समूह का प्रतिनिधित्व करने वाले विचार दिखाता है। मेरे पास itemTableView भी है जिसमें समूह के आइटम का प्रतिनिधित्व करने वाले कॉलम हैं। मैं एक ही प्रतिनिधि/डेटासोर्स विधियों का उपयोग करता हूं, यदि अन्य एनएसटीबल व्यू का उपयोग किया जा रहा है और पंक्तियों, सेल व्यू इत्यादि के उचित # के साथ प्रतिक्रिया दें। इसके अतिरिक्त, मैं समूह तालिका को समायोजित करने के लिए निम्नलिखित प्रतिनिधि विधि को लागू करता हूं दृश्य की पंक्ति की ऊँचाई बराबर होना समूह में पंक्तियों की आइटम पंक्ति ऊंचाइयों का योग:
- (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row
{
if (tableView == self.groupTableView) {
NSUInteger firstRowIndexForGroup = ...;
NSUInteger lastRowIndexForGroup = ...;
CGFloat groupHeight = 0.0;
for (NSUInteger currentRowIndex = firstRowIndexForGroup; currentRowIndex <= lastRowIndexForGroup; currentRowIndex++) {
groupHeight += [self.itemTableView rectOfRow:lastRowIndexForGroup].size.height;
}
return groupHeight - [self.itemTableView intercellSpacing].height;
} else {
return self.itemTableView.rowHeight;
}
}
तुम भी -noteHeightOfRowsWithIndexesChanged:
हर बार कॉल करना होगा तालिका दृश्य क्योंकि ऊंचाई की संख्या के अनुसार बदलता है एक समूह को देखने की जरूरत है समूह में पंक्तियां
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
if (tableView == self.groupTableView) {
GroupRowView *view = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
// configure view
[tableView noteHeightOfRowsWithIndexesChanged:[NSIndexSet indexSetWithIndex:row]];
return view;
} else {
ItemRowView *view = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
// configure view
return view;
}
}
मैंने समूह तालिका दृश्य पर पंक्ति चयन और क्षैतिज और लंबवत स्क्रॉल बार अक्षम कर दिए। मैंने दोनों टेबल दृश्यों के लिए क्षैतिज ग्रिड भी ठोस बना दिया। अंत में, मैं आइटम तालिका दृश्य के बगल में समूह तालिका दृश्य को स्थिति में रखता हूं, जिसमें कोई अंतर नहीं होता है, ऐसा लगता है जैसे यह एक तालिका दृश्य में बस एक और कॉलम है। परिणाम एक निर्दोष कार्यान्वयन है जिसमें टेबल दृश्यों के बीच शून्य अंतराल है। उपयोगकर्ता के लिए, ऐसा प्रतीत होता है जैसे यह एक एकल तालिका दृश्य है।
ओह वाह ... यह निश्चित रूप से एक समाधान है जो वास्तव में मेरे दिमाग को पहली बार नहीं दबाएगा! सिंक्रनाइज़ स्क्रॉलिंग के साथ काम करने से पहले मैं देख सकता हूं कि यह कैसे काम करता है। शायद जोड़ने के लिए एक बात यह है कि यदि समूह सेल क्लिक/चयनित हो जाता है तो उसे आइटम तालिका दृश्य की पहली पंक्ति में चयन को 'अग्रेषित' करना होगा। – klotz
आप समूह तालिका दृश्य को वैकल्पिक रूप से प्रति पंक्ति में दो पंक्तियों को विभाजित करने के लिए विभाजित कर सकते हैं, इस प्रकार आप शीर्ष पंक्ति को दूसरों के ऊपर फ़्लोट कर सकते हैं, इसलिए यदि आपके पास एक बड़ा समूह है, तो आपकी समूह जानकारी अंतिम समूह आइटम स्क्रॉल होने तक फ़्लोट हो जाती है स्क्रीन। – Andrew
समूह तालिका के साथ आइटम तालिका की पंक्तियों को रखने के लिए आप क्या आए थे? आप आइटम पंक्तियों को अपनी पंक्तियों को क्रमबद्ध करने से कैसे रखते हैं ताकि वे उस समूह के अनुरूप न हों जो वे आगे हैं? – erynofwales