2009-09-12 7 views
10

पर एकाधिक UITableViews मुझे एक UIView पर दो UITableViews की आवश्यकता है। मैं इसे एक के साथ काम कर सकता हूं, यहां कोड है:एक UIView

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 

    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [contentOne count]; // sets row count to number of items in array 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    NSString *firstValue = [[NSString alloc] initWithFormat: @"Row %i% %", indexPath.row+1 ]; 
    NSString *secondValue = [contentOne objectAtIndex:indexPath.row]; 

    NSString *cellValue = [firstValue stringByAppendingString: secondValue]; // appends two strings 

    [cell.textLabel setText:cellValue]; 



    return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

} 

मैंने कई अलग-अलग तरीकों की कोशिश की है। किसी को? अगर मैं प्रत्येक UITableView को एक अलग नाम नाम दे सकता हूं जो इसे करना चाहिए, लेकिन यह मुझे बिना किसी क्रैश किए किसी भी चीज़ पर तालिका को देखने की अनुमति देगा।

+0

डुप्लिकेट प्रश्न समाधान में दिए गए प्रयास करें: http://stackoverflow.com/a/11789681/846372 – Soniya

उत्तर

28

तो आप किसी तरह की जरूरत है दो tableView अलग है बताने के लिए - या तो आप विभिन्न मूल्यों के लिए "टैग" गुण सेट सकता है, या कि प्रत्येक दृश्य

@property (nonatomic, retain) IBOutlet UITableView *tableView1; 
@property (nonatomic, retain) IBOutlet UITableView *tableView2; 
की ओर इशारा करते हुए अपने दृश्य नियंत्रक पर कोई संपत्ति है,

तो इन इंटरफ़ेस बिल्डर में प्रत्येक दृश्य के लिए ऊपर हुक ...

तो आपके विचार नियंत्रक तरीकों में आप

(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    if (tableView == self.tableView1) { 
     return 37; 
    } else if (tableView == self.tableView2) { 
     return 19; 
    } else { 
     // shouldn't get here, use an assert to check for this if you'd like 
    } 
} 
+0

मैंने कोशिश की - (NSInteger) numberOfSectionsInTableView: (UITableView *) tableView { \t यदि (tableView == self.tableOne) { वापसी 1; \t} \t अन्य यदि (tableView == self.tableTwo) { \t वापसी 1; \t} \t बाकी \t { \t \t वापसी 1; \t \t} } यह मेरे tableView की त्रुटि स्थानीय घोषणा देता छुपाता उदाहरण –

+0

आप एक वर्ग चर tableView नामित है? क्या आपकी कक्षा यहां UITableViewController से ली गई है, या कुछ और? –

+0

मैंने UIView के अंदर सबकुछ किया। मेरे पास UITableView के लिए एक अलग नियंत्रक नहीं था। मैंने बस अनुभागों की कोशिश की और दो अलग यूआईटीबल व्यू बनाने की कोशिश करने से यह इतना आसान है। मैं अलग-अलग वर्गों में अपने दो सरणी अलग करने में सक्षम था। मदद के लिए शुक्रिया। मुझे बस यह नहीं मिल रहा है। –

14

शायद मैं के लिए सबसे आसान तरीका क्या कर सकते हैं इसका पूरक दो प्रतिनिधि और डेटा स्रोत वर्ग होना चाहिए, प्रत्येक तालिका दृश्य के लिए एक। इससे व्यू कंट्रोलर कोड में if (tableview == tableview1) घटनाओं की संख्या कम हो जाएगी।

+1

में सबसे अच्छा है, क्या आप इसके लिए एक उदाहरण कार्यान्वयन प्रदान कर सकते हैं? – dombesz

+1

लेकिन यह लागू करने के लिए प्रतिनिधि और डेटा स्रोत विधियों की संख्या गुणा करेगा। यह एक देना है और परिदृश्य ले लो :) –