2009-08-24 10 views
17

मैं एक UITableView बनाया है और एक विशिष्ट UITableViewCell चुन लिए (नीला) प्रकट करने के लिए जब दृश्य लोड किया जाता है जाएगा।डिफ़ॉल्ट रूप से मैं UITableViewCell का चयन कैसे करूं?

+0

के अनुसार इस सवाल देखें: http://stackoverflow.com/questions/19295297/uitableviewcell- सेट-चयनित-प्रारंभ में/25128427 # 25128427 –

उत्तर

0

UITableViewCell विधि

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 

जानकारी here का प्रयोग करें।

+0

शायद निम्न विधि सूट बेहतर हो सकता है? http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableViewCell/setHighlighted:animated: –

+0

जो विधि? लिंक does not किसी भी विशेष विधि – Daniel

+1

हे अगर यह ound, कि एक यह पर प्रकाश डाला गया और उसका चयन नहीं करता है पर जाते हैं, मुझे लगता है कि अगर thats सब प्रश्नकर्ता तो चाहता है कि thats – Daniel

6

इस पद्धति का उपयोग, इस तरह से पंक्ति को चुनकर रूप में कुछ Apple suggests against एक "चुना" राज्य को दिखाने के लिए कर रही है विवेकपूर्ण हो।

इसके बजाय, UITableViewCellAccessoryCheckmark की तरह कुछ करने के लिए सेल के accessoryType संपत्ति की स्थापना पर विचार करें।

+0

मैं यूआई एप्पल को दोहराने के लिए उपयोग करें जब आप जोड़ने कोशिश कर रहा हूँ अधिक उपयुक्त/कैलेंडर एप्लिकेशन में एक ईवेंट संपादित करें और एक प्रारंभ और समाप्ति दिनांक/समय सेट करें। मैंने कहीं और चेकमार्क नियम के बारे में टिप्पणियां देखीं, लेकिन मुझे अनिश्चित है कि यह इस मामले में लागू होगा (तालिका डेटा की एक सूची पेश करने के बजाय लेआउट घटकों के लिए उपयोग की जाती है)। – user119857

+0

यह एक दिलचस्प बात है।इस मामले में, उन्हें प्रत्येक स्टार्ट्स एंड एंड्स के लिए सबव्यूव करने की आवश्यकता नहीं है क्योंकि वे दोनों एक ही प्रकार के डेटा का प्रतिनिधित्व करते हैं, उसी प्रकार के यूआईपीकर व्यू द्वारा संशोधित। तो यह एक न्यायिक उपयोग का प्रतिनिधित्व करेगा। वे UITableView के selectRowAtIndexPath का उपयोग कर रहे हैं: एनिमेटेड: scrollPosition: method ... http://tinyurl.com/yd9zs65 –

1

निश्चित रूप से देखें। मुझे यकीन है कि आपके पास एक अच्छा कारण है, लेकिन ऐप्पल प्रदान करता है कि मानव इंटरफेस दिशानिर्देश दस्तावेज़ पर बारीकी से देखो। तालिका पंक्तियों को अचयनित करने के लिए ऐप्स अस्वीकार हो जाते हैं। मैं आपको एचआईजी के उचित खंड को खोजने के लिए प्रोत्साहित करता हूं और ऐप्पल को कोई सुझाव देता है।

41
-(void)viewWillAppear:(BOOL)animated { 
    // assuming you had the table view wired to IBOutlet myTableView 
    // and that you wanted to select the first item in the first section 
    [myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 
          animated:NO 
         scrollPosition:UITableViewScrollPositionTop]; 
} 

मैं चयन करने के लिए इस तकनीक का उपयोग कर रहा हूँ दो UITableViewCells में से एक तो उन जो सेल एक UIDatePicker नीचे दी गई तालिका यह प्रभाव होगा देखने को जानता है। जब आप एक नया कार्यक्रम बनाते हैं और तिथियां सेट करते हैं तो इस तकनीक का उपयोग ऐप्पल द्वारा कैलेंडर ऐप में किया जाता है।

+1

देखें 1. यह मेरे लिए काम नहीं करता है। 2. ऐप्पल का कहना है कि आपको आइटम के चयन स्थिति को इंगित करने के लिए चेकमार्क का उपयोग करना चाहिए। –

3

आप viewWillAppear में रख चाहिए।

[myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 
         animated:NO 
        scrollPosition:0]; 

आप cellForRowAtIndexPath: में उसका चयन करने का प्रयास करें, तो यह आवश्यक शैली नहीं ले जाएगा।

0

कभी-कभी, जब आप UIViewController में नहीं होते हैं, तो आपके पास viewWillAppear नहीं है, और कभी-कभी, आपने प्रोग्रामिंग रूप से अपना UITableView बनाया है।

- (void)tableView:(UITableView *)tableView 
     willDisplayCell:(UITableViewCell *)cell 
     forRowAtIndexPath:(NSIndexPath *)indexPath { 

    if (self.selectedIndex == indexPath.row) { 
     cell.selected = YES; 
    } 
} 

यह cellForRowAtIndexPath में काम नहीं करता क्योंकि सेल अभी तक प्रदर्शित नहीं किया जाता है:

आसान समाधान इस delegate विधि लागू करने के लिए है। और setSelected विधि को तब कॉल किया जाता है जब यह प्रदर्शित होता है। इस कोड तालिका दृश्य में डिफ़ॉल्ट रूप से सेल का चयन करने के

1

का प्रयोग करें, indexPath भिन्न हो हो सकता है अपनी जरूरत

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    NSIndexPath *indexPath=[NSIndexPath indexPathForRow:0 inSection:0]; 
    [theTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionBottom]; 
} 
संबंधित मुद्दे