Guten Tag Forum,
irgendetwas passt nicht. Ich bekomme immer folgende Fehlrmeldung:
Alles anzeigen
Ich habe eine XIB Datei die den Tab Bar Controller aufnimmt (MainWindow.xib). In diesem View habe ich dann zwei Views die ich verbinden möchte. Im ersten eine einfache Seite. Im zweiten eine Tabelle mit Sektionen und Index. Pro Eintrag soll dann eine weitere Tabelle geöffnet werden und schlussendlich pro Subtabelleneintrag die Detailansichten.
Zum Aufbau:
Im MainWindow.xib wurde ein Tab Bar Controller eingefügt und für den ersten View die Verbindung vom ersten Tab zum StartpageView.xib. Nun wurde der zweite Tab mit dem IndexedSectionView.xib verbunden.
Im IndexSectionView wurde ein TableView eingefügt. Delegate und Datasource wurden mit FristResponder verbunden und Firstrespornder wurde auf meine IndexedSectionViewController gelegt.
Hier der Code vom IndexedSectionViewController:
Alles anzeigen
und
Alles anzeigen
Aufrufen des ersten View klappt. Aufrufen des Tableviews endet in dem oben gezeigten Fehler. Finde einfach nicht den Urheber. Jemand eine Idee. Vielen Dank im Voraus...
fin
irgendetwas passt nicht. Ich bekomme immer folgende Fehlrmeldung:
Quellcode
- 2010-03-14 12:52:05.970 Messe[1311:207] *** -[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x3a230c0
- 2010-03-14 12:52:05.971 Messe[1311:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x3a230c0'
- 2010-03-14 12:52:05.972 Messe[1311:207] Stack: (
- 30901339,
- 2536416521,
- 31283259,
- 30852726,
- 30705346,
- 4372602,
- 4379978,
- 4378975,
- 3095514,
- 3036025,
- 3077460,
- 3066015,
- 57414320,
- 57413743,
- 57411782,
- 57410874,
- 57444408,
- 30687826,
- 30684767,
- 30682184,
- 38991757,
- 38991954,
- 2777091,
- 9148,
- 9002
- )
Ich habe eine XIB Datei die den Tab Bar Controller aufnimmt (MainWindow.xib). In diesem View habe ich dann zwei Views die ich verbinden möchte. Im ersten eine einfache Seite. Im zweiten eine Tabelle mit Sektionen und Index. Pro Eintrag soll dann eine weitere Tabelle geöffnet werden und schlussendlich pro Subtabelleneintrag die Detailansichten.
Zum Aufbau:
Im MainWindow.xib wurde ein Tab Bar Controller eingefügt und für den ersten View die Verbindung vom ersten Tab zum StartpageView.xib. Nun wurde der zweite Tab mit dem IndexedSectionView.xib verbunden.
Im IndexSectionView wurde ein TableView eingefügt. Delegate und Datasource wurden mit FristResponder verbunden und Firstrespornder wurde auf meine IndexedSectionViewController gelegt.
Hier der Code vom IndexedSectionViewController:
PHP-Quellcode
- #import <UIKit/UIKit.h>
- @interface IndexedSectionViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> {
- NSDictionary *names;
- NSArray *keys;
- NSArray *controllers;
- }
- @property (nonatomic, retain) NSDictionary *names;
- @property (nonatomic, retain) NSArray *keys;
- @property (nonatomic, retain) NSArray *controllers;
- @end
und
PHP-Quellcode
- #import "IndexedSectionViewController.h"
- #import "SecondLevelViewController.h"
- #import "DetailListTableView.h"
- @implementation IndexedSectionViewController
- @synthesize names, keys, controllers;
- - (void) viewDidLoad {
- //self.title = @"xxx";
- NSLog(@"Calling viewDidLoad IndexedSection");
- NSMutableArray *initControllers = [[NSMutableArray alloc] init];
- NSString *path = [[NSBundle mainBundle] pathForResource:@"sortednames" ofType: @"plist"];
- NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile: path];
- self.names = dict;
- [dict release];
- NSArray *initKeys = [[names allKeys] sortedArrayUsingSelector:@selector(compare:)];
- self.keys = initKeys;
- //Add new Views
- for( int i = 0 ; i < [self.keys count]; i++)
- {
- NSArray *nameSections = [self.names objectForKey:[self.keys objectAtIndex: i]];
- for (NSString *name in nameSections){
- DetailListTableView *detailListViewController = [[DetailListTableView alloc] initWithStyle: UITableViewStylePlain];
- detailListViewController.title = name;
- //Image hinzufügen moveMeController.rowImage = [UIImage imageNamed:@"moveMeIcon.png"];
- [initControllers addObject: detailListViewController];
- [detailListViewController release];
- }
- }
- self.controllers = initControllers;
- [initControllers release];
- [super viewDidLoad];
- }
- - (void)viewDidUnload {
- self.names = nil;
- self.keys = nil;
- self.controllers = nil;
- [super viewDidUnload];
- }
- - (void)dealloc {
- self.names = nil;
- self.keys = nil;
- self.controllers = nil;
- [super dealloc];
- }
- - (NSString *) tableView:(UITableView *) tableView titleForHeaderInSection:(NSInteger) section {
- return [keys objectAtIndex:section];
- }
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
- return [self.keys count];
- }
- - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
- {
- return keys;
- }
- - (NSInteger)tableView:(UITableView *)tableView
- numberOfRowsInSection:(NSInteger)section
- {
- return [self.controllers count];
- }
- - (UITableViewCell *)tableView:(UITableView *)tableView
- cellForRowAtIndexPath:(NSIndexPath *)indexPath {
- static NSString *FirstLevelCell= @"FirstLevelCell";
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
- FirstLevelCell];
- if (cell == nil) {
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
- reuseIdentifier: FirstLevelCell] autorelease];
- }
- // Configure the cell
- NSUInteger row = [indexPath row];
- SecondLevelViewController *controller = [self.controllers objectAtIndex:row];
- cell.textLabel.text = controller.title;
- cell.imageView.image = controller.rowImage;
- cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
- return cell;
- }
- #pragma mark -
- #pragma mark Table View Delegate Methods
- - (void)tableView:(UITableView *)tableView
- didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- NSUInteger row = [indexPath row];
- SecondLevelViewController *nextController = [self.controllers
- objectAtIndex:row];
- [self.navigationController pushViewController:nextController animated:YES];
- }
- @end
Aufrufen des ersten View klappt. Aufrufen des Tableviews endet in dem oben gezeigten Fehler. Finde einfach nicht den Urheber. Jemand eine Idee. Vielen Dank im Voraus...
fin