2013-10-10 5 views
31

हाय वहाँ मेरे पास ऐसी स्थिति है जहां आईपैड ऐप में मेरा master controller सूची है और विवरण नियंत्रक का विवरण है, एक सामान्य UISplitViewController पैटर्न। मैं जो हासिल करना चाहता हूं वह है, मेरी पहली पंक्ति को प्रारंभ में चुना जाना चाहिए और बाद में मैं उपयोगकर्ता को चयन choise देना चाहता हूं। मैं सेल के setSelected का उपयोग कर रहा हूं और didSelectRowAtIndexPath इस तरह के चयन को हटाने का तरीका उपयोग कर रहा हूं।UITableViewCell सेट प्रारंभ में

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [tableView deselectRowAtIndexPath:indexPath animated:NO]; 
    NSIndexPath* path = [NSIndexPath indexPathForRow:0 inSection:0]; 
    UITableViewCell* cell = [tableView cellForRowAtIndexPath:path]; 
    [cell setSelected:NO]; 
} 
प्रारंभिक सेल के लिए

लेकिन मेरी कोई भी सेल कि के बाद चयनित हो रही है तो कृपया मुझे बाहर करने में मदद।

+0

आप स्वचालित रूप से अपने tableView की पहली पंक्ति का चयन करना चाहता है है? – wesley

उत्तर

41

की तरह इस

NSIndexPath* selectedCellIndexPath= [NSIndexPath indexPathForRow:0 inSection:0]; 
[self tableView:tableViewList didSelectRowAtIndexPath:selectedCellIndexPath]; 
[tableViewList selectRowAtIndexPath:selectedCellIndexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; 

या

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if (/* should be selected */) { 
    [cell setSelected:YES animated:NO]; 
} 
} 
8

मुझे नहीं पता कि आप इस उत्तर की उम्मीद कर रहे हैं। डिफ़ॉल्ट अगर आप बाहर मैन्युअल चयन के साथ अपने tableView में पहली पंक्ति का चयन करना चाहता है से, सिर्फ didSelectRowAtIndexPath विधि इस

- (void)viewDidAppear:(BOOL)animated { 
    NSIndexPath *indexPath=[NSIndexPath indexPathForRow:0 inSection:0]; 
    [myTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionBottom]; 
} 
70

के लिए कोशिश आरंभ चयनित होने के लिए सेल, आपको -setSelected:animated: पर -tableView:willDisplayCell:forRowAtIndexPath: के भीतर से कॉल करना होगा:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (/* should be selected */) { 
     [cell setSelected:YES animated:NO]; 
    } 
} 

कहीं से भी -setSelected पर कॉलिंग का कोई प्रभाव नहीं पड़ता है।

+15

यह स्वीकार्य उत्तर होना चाहिए। – RaffAl

+19

यह उत्तर बहुत अच्छा होगा यदि आप निम्न पंक्ति जोड़ सकते हैं [tableView selectRowAtIndexPath: indexPath एनिमेटेड: कोई स्क्रॉलपॉशन: UITableViewScrollPositionNone]; यह उपयोगकर्ता को सेल को अचयनित करने की अनुमति देता है। यदि यह रेखा गुम है तो लाइन को अचयनित नहीं किया जा सकता है। – cateof

+3

लेकिन यदि आप उपयोग करना चाहते हैं [tableView selectRowAtIndexPath: indexPath एनिमेटेड: कोई स्क्रॉलपॉशन: UITableViewScrollPositionNone]; आपको इसे [tableView: cellForRowAtIndexPath:] में पेस्ट करना होगा क्योंकि [tableView: weillDisplayCell:] यह काम नहीं करेगा। –

5

यह भी पॉप नेविगेशन

ज फ़ाइल के मामले में मदद मिलेगी,

NSIndexPath *defaultSelectedCell 

मीटर फ़ाइल

viewDidAppear में ViewDidLoad

defaultSelectedCell= [NSIndexPath indexPathForRow:0 inSection:0]; 

में इस कोड रखो

[self.tableView selectRowAtIndexPath:defaultSelectedCell animated:NO scrollPosition:UITableViewScrollPositionNone]; 

इस में मदद मिलेगी जब आप पॉप, tableView didSelectRowAtIndexPath विधि में viewWillAppear

[self.catTableView selectRowAtIndexPath:defaultSelectedCell animated:NO scrollPosition:UITableViewScrollPositionNone]; 

में इस कोड रखो,

defaultSelectedCell = [NSIndexPath indexPathForRow:indexPath.row inSection:0]; 

यह मैं पूरी तरह से मदद करता है या तो पहली बार लोड हो रहा है या पॉप नेविगेशन।

19

स्विफ्ट 3: चयन सेल शुरू में

import UIKit 

class MyViewController: UIViewController, UITableViewDelegate { 
    @IBOutlet weak var tableView: UITableView! 
    ... 

    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { 

     if /* your code here */ == indexPath.row { 
      tableView.selectRow(at: indexPath, animated: false, scrollPosition: UITableViewScrollPosition.none) 
     } 
    } 

    ... 
} 
+2

यह चयनित उत्तर होना चाहिए क्योंकि यह चयन को संरक्षित करता है जब दूसरी पंक्ति का चयन किया जाता है। हो सकता है कि उसमें एक चेक जोड़ें यदि यह सुनिश्चित करने के लिए कथन है कि यह केवल पंक्ति का चयन करता है यदि यह चालू नहीं है; y चयनित है। –

+1

मैं डगलस से सहमत हूं। इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए। मैं पिछले कुछ घंटों में समाधान की तलाश में हूं और यह मेरी समस्या का समाधान करता है। – user30646

+0

@ user30646 वही यहाँ! .. यह सही जवाब होना चाहिए क्योंकि इससे मुझे मेरी समस्या का समाधान करने में भी मदद मिली! – Pangu