2012-09-14 12 views
15

मुझे एक अजीब समस्या है। मैं इस त्रुटि मिलती है:तालिका दृश्य: संख्याऑफ्रोसइनसेक्शन:]: अज्ञात चयनकर्ता उदाहरण के लिए भेजा गया

-[FourSquareCheckInViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x7aecc0 
2012-09-14 19:18:39.039 [5869:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[FourSquareCheckInViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x7aecc0' 
*** First throw call stack: 
(0x3545e88f 0x37805259 0x35461a9b 0x35460a83 0x353bb650 0x32ee3693 0x32ee49ed 0x32ee493f 0x32ee451b 0x32ef17df 0x32ef16af 0x32e95f37 0x353bd1fb 0x3228daa5 0x3228d6bd 0x32291843 0x3229157f 0x322894b9 0x35432b1b 0x35430d57 0x354310b1 0x353b44a5 0x353b436d 0x37050439 0x32ec0cd5 0xb7ebb 0xb7e60) 
terminate called throwing an exception(lldb) 

ठीक है तो मुझे यकीन है कि ViewController डेटा स्रोत और प्रतिनिधि के रूप में सेट किया गया है बना दिया है। मैंने UITableViewDelegate और UITableViewDataSource को <> चीज़ों में जोड़ा है।

मैंने tableView.delegate = self और tableView.dataSource = स्वयं को मेरे दृश्य में सेट किया है DidLoad विधि।

यहाँ viewDidLoad और viewDidAppear तरीकों में से मेरी दिया गया है:

:

- (NSInteger)numberOfRowsInSection:(NSInteger)section{ 
    return 5; 
} 

यहाँ दृश्य नियंत्रक के लिए मेरे हेडर फ़ाइल है:

- (void)viewWillAppear:(BOOL)animated{ 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move 
    locationManager.desiredAccuracy = kCLLocationAccuracyKilometer; // 1km 
    [locationManager startUpdatingLocation]; 
    locationLat = [locationManager location].coordinate.latitude; 
    locationLng = [locationManager location].coordinate.longitude; 
    [locationManager stopUpdatingLocation]; 

    // 1 
    CLLocationCoordinate2D zoomLocation; 
    zoomLocation.latitude = locationLat; 
    zoomLocation.longitude= locationLng; 
    // 2 
    MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, 0.5*METERS_PER_MILE, 0.5*METERS_PER_MILE); 
    // 3 
    MKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];     
    // 4 
    [_mapView setRegion:adjustedRegion animated:YES]; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    _tableView.delegate = self; 
    _tableView.dataSource = self; 

    // Do any additional setup after loading the view. 
    // 1 
    MKCoordinateRegion mapRegion = [_mapView region]; 
    CLLocationCoordinate2D centerLocation = mapRegion.center; 

    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move 
    locationManager.desiredAccuracy = kCLLocationAccuracyKilometer; // 1km 
    [locationManager startUpdatingLocation]; 
    locationLat = [locationManager location].coordinate.latitude; 
    locationLng = [locationManager location].coordinate.longitude; 
    [locationManager stopUpdatingLocation]; 

} 

यहाँ numberOfRowsInSection के लिए मेरे विधि शरीर है

#import <UIKit/UIKit.h> 
#import <MapKit/MapKit.h> 

#define METERS_PER_MILE 1609.344 

@interface FourSquareCheckInViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, CLLocationManagerDelegate, MKMapViewDelegate>{ 

} 


@property (weak, nonatomic) IBOutlet MKMapView *_mapView; 

- (NSInteger)numberOfRowsInSection:(NSInteger)section; 
@property (weak, nonatomic) IBOutlet UITableView *_tableView; 



@end 

यहां एक स्क्रीनशॉट दिखाया गया है कि मेरी तालिका दृश्य कैसे जुड़ा हुआ है:

enter image description here

उत्तर

29

पढ़ें कि त्रुटि संदेश आपको क्या बता रहा है!

आपने numberOfRowsInSection: लागू किया है। तो क्या? यह गलत तरीका है। यह अप्रासंगिक है। इसे कभी नहीं बुलाया जाएगा।

आपको जिस विधि को लागू करने की आवश्यकता है उसे tableView:numberOfRowsInSection: कहा जाता है। यह बिल्कुल अलग है।

+0

क्या मेरे पास इस विधि का कुछ कोड उदाहरण हो सकता है? मैं इसे नहीं ढूंढ सकता। – jimbob

+0

http://developer.apple.com/library/ios/documentation/userexperience/conceptual/TableView_iPhone/CreateConfigureTableView/CreateConfigureTableView.html#//apple_ref/doc/uid/TP40007451-CH6-SW5 – matt

+0

दस्तावेज़: http: // डेवलपर .apple.com/लाइब्रेरी/आईओएस/# दस्तावेज़ीकरण/यूआईसीआईटी/संदर्भ/यूआईटीबल व्यूडाटासोर्स_Protocol/संदर्भ/संदर्भ.html – matt

0
- (NSInteger)numberOfRowsInSection:(NSInteger)section; 

आप UITableViewDataSource विधि को लागू नहीं कर रहे हैं। घोषणा हटाएं और यह अब और दुर्घटनाग्रस्त नहीं होगा। या वैकल्पिक रूप से इसके लिए एक विधि निकाय प्रदान करते हैं।

+0

मेरे पास है इसके लिए एक विधि निकाय: – jimbob

+0

- (एनएसआईएनटेगर) संख्याऑफ्रोसइनसेक्शन: (एनएसआईएनटेगर) सेक्शन { वापसी 5; } – jimbob

+1

आह, ठीक है कि इसे संपादित करने से पहले मूल प्रश्न डालने में मददगार होगा;) – brynbodayle

4

यह बहुत आसान है, मुझे एक ही समस्या मिली है। मैं अपने ViewController जो दो प्रोटोकॉल के साथ UIViewController subclassed है में स्टोरीबोर्ड के बिना मेरे tableview को लागू कर रहा हूँ: <UITableViewDataSource, UITableViewDelegate>

लेकिन अगर आप UITableViewDataSource को देखने के लिए वहाँ दो तरीकों डायन @required हैं और इन आप अपने कोड में लागू करने की आवश्यकता:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;

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

UITableViewDelegate के सभी अन्य तरीकों @optional इसलिए आप उन्हें लागू करने की जरूरत नहीं है कर रहे हैं।

24

I had delegate and datasource hooked up to the TableView

आप दृश्य पर क्लिक करते हैं यह निरीक्षक में ऊपर कनेक्शन दिखाना चाहिए। आप नहीं मिला है ViewController रूप में अच्छी तरह झुका आप त्रुटि प्राप्त होगी:

'NSInvalidArgumentException', reason: '-[UIView tableView:numberOfRowsInSection:]: unrecognized selector sent to instance

मैं कैसे त्रुटि बंद कर दिया आप

  1. ViewController पर प्रेस का चयन करने के लिए यह
  2. नज़र है संदर्भित दुकानोंकनेक्शन निरीक्षक में Ne के चक्र से सही
  3. खींचें करने के लिए दृश्य
  4. जब आप माउस जारी, एक छोटे से पॉपअप दिखाई देगा करने के लिए आउटलेट संदर्भित डब्ल्यू - डेटा स्रोत
  5. दोहराने चरण 3, और इस बार प्रतिनिधि

चयन का चयन करते हैं किया है, यह नीचे दी गई छवि की तरह दिखना चाहिए!

Referencing outlet Datasource and delegate connected to view

यह मेरे लिए उपरोक्त त्रुटि बंद कर दिया। मुझे आशा है कि यह किसी की मदद करेगा।

+0

यह महान उत्तर दिखाता है कि ** कनेक्शन इंस्पेक्टर ** के माध्यम से इसे कैसे हल किया जाए, जो @matt को पूरा करता है कोड के माध्यम से। – Gonen

9

तुम भी यह त्रुटि दिख जाएगा, हालांकि आप दृश्य नियंत्रक में सब कुछ झुका दिया है ठीक से, आप अपने स्टोरीबोर्ड में अपने कस्टम दृश्य नियंत्रक वर्ग आवंटित करने के लिए भूल गए हैं:

Enter your custom view controller in identity inspector

+0

यह मेरे मामले में समस्या थी –

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

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