नहीं निकाल दिया गया है मेरे पास spliewViewController है जो MasterViewController के रूप में कुछ दृश्य नियंत्रक के रूप में है और DetailViewController के रूप में कुछ tableViewController है। जब मैं मास्टरव्यू कंट्रोलर पर एक बटन दबाता हूं, तो मैं मौजूदा तालिका के बजाय विवरण में नया टेबल व्यू कंट्रोलर दिखाना चाहता हूं।UITableView reloadData - cellForRowAtIndexPath को
SearchDetailViewController *searchDetailViewController = [[SearchDetailViewController alloc] initWithStyle:UITableViewStylePlain];
UINavigationController *searchDetailNavigationController = [[UINavigationController alloc] initWithRootViewController:searchDetailViewController];
मैं नए tableController में दिखाने के लिए डेटा गुजर रहा है कि बाद:
[searchDetailViewController passInSearchResults:listOfItems];
है कि मैं "पुश" splitViewController करने के लिए नए नियंत्रक के बाद:
तो मैं इस तरह किया
[searchSplitViewController setViewControllers:[NSArray arrayWithObjects:self.navigationController, searchDetailNavigationController, nil]];
लक्ष्य तालिका में व्यू कंट्रोलर विधि "passInSearchResults" डेटा पास हो गया है और मैं reloadDa भी कॉल करता हूं टा। विधि इस तरह दिखता है:
- (void)passInSearchResults:(NSMutableDictionary *)searchResults {
self.searchResultList = searchResults;
NSLog(@"Data is passed in: %@",self.searchResultList);
[self.tableView reloadData];
//[self.tableView setNeedsDisplay];
}
कंसोल: डेटा में पारित हो जाता है: [यहाँ मैं सटीक डेटा मैं चाहते हैं और यह सिर्फ सही लगता है]।
After this I see that method "numberOfRowsInSection" is fired:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"Setting table length: %i",[self.searchResultList count]);
return [self.searchResultList count];
}
कंसोल: सेटिंग तालिका लंबाई: [यहाँ मैं उचित लंबाई प्राप्त]
समस्या यह है कि टेबल पारित कर दिया डेटा और विधि "cellForRowAtIndexPath" से भरा नहीं है है नहीं बुलाया जाता है।
यह कैसे हो सकता है कि पुनः लोडडेटा विधि "numberOfRowsInSection" को निकाल दिया गया है लेकिन विधि "cellForRowAtIndexPath" नहीं है ... ???
धन्यवाद
यह जांचना आवश्यक नहीं है कि आप पहले मुख्य धागे पर चल रहे हैं। 'performSelectorOnMainThread' काम करता है, भले ही आप पहले से ही मुख्य थ्रेड पर हों, जैसा कि' dispatch_async (dispatch_get_main_queue() '(जो शायद आप वास्तव में यहां चाहते हैं) है। 'अगर' यहां जोड़ना अनावश्यक प्रोसेसर चक्र का उपभोग करता है। –