• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Einige Blicke in fremde Welten dürft Ihr nun bestaunen und darüber abstimmen, welche davon Euch am meisten gefällt: hier geht es lang für Euer Voting --> Klick

Problem mit reloadData bei einer Tableview

skydiver12481

Granny Smith
Registriert
24.02.11
Beiträge
14
Hallo Leute,

ich mal wieder mit meinen Problemen... Ich habe folgendes aufgebaut:

Einen Viewcontroller mit einer Tableview. Nun rufe ich beim Selektieren einer Row ein NSObject auf mit einem PickerViewcontroller... Speichere den wert des Pickers in eine DB und versuche dann einen reloadData für die Tableview. Leider ist aber die Tableview (null) und der reload greift nicht... Hier mein Code:

Der ViewController:
Code:
#import "StartSearchDef02.h"
#import "LocationSearchViewController.h"
#import "SearchResultViewController.h"
#import "AppDelegate.h"
@implementation StartSearchDef02
@synthesize STable;
@synthesize ContentArray1;
@synthesize ContentArray2;
@synthesize ContentArray3;
@synthesize location;
@synthesize minprice;
@synthesize maxprice;
@synthesize minarea;
@synthesize maxarea;
@synthesize typData;
@synthesize kmData; 

-(void)initializeDB_Data{
	ContentArray1 = [[NSArray alloc]initWithObjects:@"Definieren Sie Ihre Objektvorstellungen und erhalten Sie die Immobilie die Sie sich wünschen.",nil];
	ContentArray2 = [[NSArray alloc]initWithObjects:@"Kaufen / Mieten",@"Objekttyp",@"PLZ / Ort",@"Kauf / Mietpreis",@"Gewünschte Fläche",nil];
	
	
	AppDelegate *appDel = (BAppDelegate*)[[UIApplication sharedApplication]delegate];
	sqlite3 *db = [appDel getNewDBConnection];
	sqlite3_stmt *statement = nil;
	
	const char *sql = "select * from search_data where rowid='1'";
	
	if (sqlite3_prepare_v2(db,sql,-1,&statement,NULL)!=SQLITE_OK)NSAssert1(0,@"Error preparing statement",sqlite3_errmsg(db));
	else{
		while (sqlite3_step(statement)==SQLITE_ROW){
		
		
		location= [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 0)];
		minprice= [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 1)];
		maxprice= [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 2)];
		minarea= [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 3)];
		maxarea= [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 4)];
		typData= [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 5)];
		kmData= [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 8)];
			
			if ([kmData isEqual:@"0"]){kmData=@"nichts";} 
			if ([typData isEqual: @"0"]){typData=@"nichts";}
			if ([location isEqual:@"0"]){location=@"nichts";}
			if ([minprice isEqual:@"0"]){minprice=@"nichts";}
			else {
				NSString *pwerte = [NSString stringWithFormat:@" %@ € bis %@ €",minprice,maxprice];
				minprice = pwerte;
			}
			if ([minarea isEqual:@"0"]){minarea=@"nichts";} 
			else {
				NSString *qmwerte = [NSString stringWithFormat:@" %@ qm bis %@ qm",minarea,maxarea];
				minarea = qmwerte;
			}
			
			ContentArray3 = [[NSArray alloc]initWithObjects:kmData,typData, location, minprice, minarea, nil];
			
				}
	sqlite3_finalize(statement);
		
		}
}



// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    
	self.navigationItem.title =@"Suchassistent";	
	[self initializeDB_Data];
		MKPick = [[MKPickerSlide alloc] init];
	[MKPick Setup];
	[self.view addSubview:MKPick.ComboView];
	TSlide = [[TypPickerSlide alloc]init];
	[TSlide Setup];
	[self.view addSubview:TSlide.ComboView];
	KMPS = [[KMPSlide alloc]init];
	[KMPS Setup];
	[self.view addSubview:KMPS.ComboView];
	FLS = [[FLSlide alloc]init];
	[FLS Setup];
	[self.view addSubview:FLS.ComboView];
	[super viewDidLoad];
	
}


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

-(NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
	NSString *sectionHeader = nil;
	if (section ==0){
	
	}
	if (section ==1){
	sectionHeader = @"Sucheinstellungen";
	}
	return sectionHeader;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
	if (section ==1)
	return [ContentArray2 count];
	else
	return 1;
}


-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{
	if (indexPath.section ==0)
		return 50;
	else
		return 40;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
	static NSString *identifier =@"Cell";
	UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
	if (cell == nil) {
		cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier] autorelease];
	}
	
	if (indexPath.section ==0){
		cell.textLabel.text = [ContentArray1 objectAtIndex:indexPath.row];
		cell.selectionStyle = UITableViewCellSelectionStyleNone;
		cell.textLabel.font = [UIFont systemFontOfSize:12];
		cell.textLabel.numberOfLines = 2;
		return cell;}
	
	if (indexPath.section ==1){	
		
		cell.textLabel.text = [ContentArray2 objectAtIndex:indexPath.row];
		cell.textLabel.font = [UIFont systemFontOfSize:16];
		
		
			NSString *choosen = [NSString stringWithFormat:@"Sie haben %@ ausgewählt.",[ContentArray3 objectAtIndex:indexPath.row]];
			cell.detailTextLabel.text = choosen;
		
		
		cell.detailTextLabel.font = [UIFont systemFontOfSize:12];
		cell.detailTextLabel.textColor = [UIColor lightGrayColor];
		cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;	
		return cell;}
	else{	
		cell.textLabel.text = @"weiter";
		cell.textLabel.font = [UIFont systemFontOfSize:16];
		return cell;}
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
	if (indexPath.section ==1){	
		if([ContentArray2 objectAtIndex:indexPath.row]==@"Kaufen / Mieten"){
			
			NSLog (@"Kaufen / Mieten");
			[MKPick Show];
			
		}
		
		if([ContentArray2 objectAtIndex:indexPath.row]==@"Objekttyp"){
			
			NSLog (@"Objektart");
		    [TSlide Show];
		}
		
		if([ContentArray2 objectAtIndex:indexPath.row]==@"PLZ / Ort"){NSLog (@"Ort ermitteln");
		
			LocationSearchViewController *LSVController = [[LocationSearchViewController alloc] initWithNibName:nil bundle:nil];
			LSVController.dataSource = [[[NSMutableArray alloc]init]autorelease];
			
			[LSVController.dataSource addObject:[NSString stringWithFormat:@"76185 Karlsruhe"]];
			[LSVController.dataSource addObject:[NSString stringWithFormat:@"Karlsruhe"]];
			[LSVController.dataSource addObject:[NSString stringWithFormat:@"Villingen-Schwenningen"]];
			
			[self.navigationController pushViewController:LSVController animated:YES];
			
			[LSVController release];
			LSVController = nil;
		
		}
		
		if([ContentArray2 objectAtIndex:indexPath.row]==@"Kauf / Mietpreis"){
			
			NSLog (@"Kauf / Mietpreis");
		    [KMPS Show];
		}
		
		if([ContentArray2 objectAtIndex:indexPath.row]==@"Gewünschte Fläche"){
			NSLog (@"Objektgröße");
			[FLS Show];
			}
		}
		else{
			
		if (indexPath.row==0){
		SearchResultViewController *SRVController = [[SearchResultViewController alloc] initWithNibName:@"SearchResultViewController" bundle:nil];
		[self.navigationController pushViewController:SRVController animated:YES];
		[SRVController release];
		SRVController = nil;}
		}
}




- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
}

- (void)viewDidUnload {
    [super viewDidUnload];
    
}


- (void)dealloc {
	[ContentArray1, ContentArray2, ContentArray3 release];
	[super dealloc];
}


@end

Hier die NSObject (m-Datei):

Code:
#import "MKPickerSlide.h"
#import "AppDelegate.h"
@implementation MKPickerSlide

#define VIEWHEIGHT 315
#define DELAYANIMATION 0.8


@synthesize Combo,ComboView,pickerData, selected, data1;


-(void)Setup{	
	pickerData =[[NSMutableArray alloc]init];
	[pickerData addObject:@""];
	[pickerData addObject:@"Kaufen und Mieten"];
	[pickerData addObject:@"Kaufen"];
	[pickerData addObject:@"Mieten"];
	ComboView = [[UIView alloc] initWithFrame:CGRectMake(0, 400, 320, VIEWHEIGHT)];
	[ComboView setBackgroundColor:[UIColor blackColor]];	
	Combo = [[UIPickerView alloc] initWithFrame:CGRectMake(0,40,320,212)];
	[Combo setDelegate:self];
	[Combo setShowsSelectionIndicator:YES];	
	[Combo selectRow:0 inComponent:0 animated:NO];
	[ComboView addSubview:Combo];
	UIToolbar *toolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 40)];
	toolbar.barStyle = UIBarStyleBlack;
	[toolbar sizeToFit];
	[ComboView addSubview:toolbar];
	NSMutableArray *buttons = [[NSMutableArray alloc]initWithCapacity:2];
	UIButton *finish = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(Hide)];
	[buttons addObject:finish];
	[finish release];
	[toolbar setItems:buttons animated:NO];
	[buttons release];
	

}

-(void)Show{		
	[UIView beginAnimations:nil context:nil];
	[UIView setAnimationDuration:DELAYANIMATION];  
	[ComboView setFrame:CGRectMake(0,420-VIEWHEIGHT,320,VIEWHEIGHT)];
	[UIView commitAnimations];	
	
	
}

-(void)Hide{
	
	[UIView beginAnimations:nil context:nil];
	[UIView setAnimationDuration:DELAYANIMATION];
	[ComboView setFrame:CGRectMake(0,461,320,VIEWHEIGHT)];
	[UIView commitAnimations];
	NSLog(@"Speichern km");
	
	if(selected ==(id)[NSNull null]||selected.length == 0){selected =@"0";}
	AppDelegate *appDel = (AppDelegate*)[[UIApplication sharedApplication]delegate];
	sqlite3 *db = [appDel getNewDBConnection];
	sqlite3_stmt *statement = nil;
	NSString *sqlstring = [NSString stringWithFormat:@"update search_data set immo_km ='%@' where rowid= '1'",selected];
	NSLog(@"%@",sqlstring);
	if (sqlite3_prepare_v2(db, [sqlstring UTF8String], -1, &statement, NULL)!=SQLITE_OK)NSAssert1(0,@"Fehler beim erstellen des Updatestatements '%s'",sqlite3_errmsg(db));
	if(SQLITE_DONE != sqlite3_step(statement))NSAssert1(0,@"Fehler beim Updaten '%s'",sqlite3_errmsg(db));
	sqlite3_finalize(statement);
	
	
	}



- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
	return (NSString*)[pickerData objectAtIndex:row];
	}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
	return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
	return [pickerData count];
	
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
	
	NSLog(@"Ausgewählt %@",selected);
		selected = [pickerData objectAtIndex:row];
	
			
	
}




- (void)dealloc {
    [Combo,ComboView,pickerData release];
	[super dealloc];
}

@end

Weiß da jemand Rat???