2012-02-01 18 views
26

मैं ios 5 UITableView के didSelectRowAtIndexPath, जो ios 4.UITableView didSelectRowAtIndexPath पहले नल

पहली बार मैं तालिका में किसी भी पंक्ति नल में सही है के साथ समस्या हो रही है पर नहीं बुलाया जा रहा है, विधि नहीं है बुलाओ एक बार जब मैं एक और पंक्ति का चयन करता हूं, तो यह didSelectRowAtIndexPath को कॉल करता है, लेकिन अंतिम अनुक्रमणिका पाथ पास करता है।

मैंने पहले से tableView.delegate सेट किया है, और यह ios4 में सही ढंग से चलाया जा सकता है।

MainView.xib 
UITabBarController 
    --UINavigationController 
     --**UITableViewController** 

कोई सुझाव?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.tableView.delegate = self; 
    self.tableView.dataSource = self; 
} 

#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return 10; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 
    cell.textLabel.text = [[NSString alloc]initWithFormat:@"%d",indexPath.row]; 
    return cell; 
} 

#pragma mark - Table view delegate 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"%d",indexPath.row); 
} 
+29

क्या आप कोड पोस्ट कर सकते हैं? क्या आप वाकई कार्यान्वित नहीं किए हैं DDlectlectRowAtIndexPath? – Anna

+0

मैंने अचयनित नहीं किया था। धन्यवाद। –

+0

यह कोई समस्या नहीं काम करना चाहिए। क्या यह वर्ग UITableViewController का उप-वर्ग है? यदि यह देखने के लिए है कि दृश्य में सेट सेट करने की कोई आवश्यकता नहीं है DidLoad विधि क्योंकि यह पहले से ही असाइन किया गया है। अन्यथा वर्ग .h फ़ाइल में ब्रैकेट में प्रतिनिधि जोड़ें। –

उत्तर

0

कृपया Xib से फ़ाइलों के मालिकों को प्रतिनिधि से कनेक्ट करें। फिर कोशिश करें यह काम करेगा।

1

कृपया, नीचे दिए गए कोड पर अपनी -viewDidLoad बदलने की कोशिश करें (अंतिम पंक्ति डालें)। परिणामों के बारे में मुझे बताओ।

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.tableView.delegate = self; 
    self.tableView.dataSource = self; 
    [self.tableView reloadData]; 
} 
0

अपने viewDidLoad विधि

[self.tableView reloadData] 
1

में यह कोड जोड़ें मुझे यकीन है कि अगर यह जवाब दिया गया है, लेकिन मैं इस मुद्दे के साथ और बस की तरह "अन्ना Karenina" ऊपर टिप्पणी की चल रहा था नहीं हूँ। सुनिश्चित करें कि आप विस्तार पर ध्यान देना चाहते हैं।

यह आपको से कारण का चयन रद्द

-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath 

को लागू करने यह काम करने के लिए नहीं पहले क्लिक लेकिन निम्नलिखित क्लिक और किसी अन्य सेल अपेक्षा के अनुरूप काम होगा कारण होगा है।

समाधान: सुनिश्चित करें कि आप ध्यान देना है और उपयोग didSelectRowAtIndexPath

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

आशा व्यक्त की कि मदद करता है और का उल्लेख है कि मैं इस से पहले "अन्ना Karenina" द्वारा हल किया गया था

32

आप को लागू किया है हो सकता है (नोटिस बनाना का चयन रद्द करें): didDeselectRowAtIndexPath

... इसलिए एक नया सेल चुनने पर ट्रिगर पहले सीटीएस, और इंडेक्सपैथ लॉगिंग पहले के रूप में भी।

समाधान:didSelectRowAtIndexPath

हाँ, वे सुपर ही दिखते हैं, और यह मदद नहीं करता है didDeselectRowAtIndexPath पहली विधि Xcode का स्वत: पूर्ण समय के सबसे अधिक का चयन करता है।

पूर्ण कोड:

// right 
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {} 
+1

धन्यवाद! यह सोच रहा था कि मेरा अलर्ट व्यू आखिरी चयनित पंक्ति का विवरण क्यों दिखा रहा था! –

+0

बस मेरे आईओएस 8 स्विफ्ट प्रोजेक्ट के साथ एक बहुत ही समान मुद्दे के लिए आया था। यह वही है जो मैंने किया था। धन्यवाद! – Jase

+0

यदि आप ** बोल्ड ** चुनें और अचयनित करें तो थोड़ा सा मदद मिलेगी। इसे देखने के लिए थोड़ा सा लग रहा है। – gjpc

0

मैं स्टोरीबोर्ड के अंदर का दृश्य पर एक UIGestureRecognizer था। मुझे इसे हटाना पड़ा और यह सामान्य की तरह काम करता था।

0

मुझे किसी अन्य वीसी में डेटा पास करते समय भी यह समस्या थी।मैंने टेबल वीसी से विस्तारित वीसी में मैन्युअल सेगू में स्विच करके इसे हल किया।

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     selectedData = data[indexPath.row] 

     performSegue(withIdentifier: "Detail", sender: self) 
} 
+0

अधिक हो सकता है कि अगर इसे अचयनित विधि कहलाया जा रहा है तो इसे कैसे हल किया जाना चाहिए? कृपया मुझे और अधिक धन्यवाद समझने में मदद करें :) – ahmedHegazi

संबंधित मुद्दे