Problem mit iPhone Programmierung (RootViewController.h)

exitus

Antonowka
Registriert
29.12.07
Beiträge
359
Servus,

hab mich nun mal ran gemacht ans tüfteln, komme nur an einer stelle leider nicht weiter.

Ich habe ein Tutorial nach gemacht und wollte es nun selbständig erweitern.

Es geht darum, dass ich eine Tabelle habe und dort halt auswählen kann... im Tutorial wurde die erste Reihe belegt, wo wenn man auf die erste reihe klickt man zu einem zweiten view gelangt, dort wird ein foto angezeigt.

nun wollte ich aber eine zweite zeile hinzufügen und dort ein nächsten view impelementieren welcher ein anderes foto beinhaltet.

mein problem ist das ich nun alles soweit fertig habe, allerdings nicht die zweite zeile eingefüht bekommme.

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


// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;
}



- (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 setText:@"Cake"];

	
    return cell;


}

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

	if(self.cakeViewController == nil){
		CakeViewController *cakeView =[[CakeViewController alloc] initWithNibName:@"Cake" bundle:nil];
		self.cakeViewController = cakeView;
		[cakeView release];
	}
	[self.navigationController pushViewController:self.cakeViewController animated:YES];

	if(self.nextViewController == nil){
		NextViewController *nextView = [[nextViewController alloc] initWithNibName:@"Test" bundle:nil];
		self.nextViewController = nextView;
		[nextView release];
	}
	[self.navigationController pushViewController:self.nextViewController animated:YES];				
}

Wäre echt toll wenn mir jemand sagen könnte wie es geht :)

greeetz exitus


Edit: Und ja ich habe im iPhone Dev Center unter Hilfe nachgeschaut ;) :p
 

philo

Roter Stettiner
Registriert
13.10.04
Beiträge
973
Code:
// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;
}
}

müsste das nicht 2 sein, wenn du eine weiter Zeile haben willst?
 

exitus

Antonowka
Registriert
29.12.07
Beiträge
359
richtig, das dachte ich nämlich auch ^^ er gibt dann nur 2 mal die gleiche zeile aus und nicht 2 verschiedene. was ich halt nicht verstehe ^^
 

philo

Roter Stettiner
Registriert
13.10.04
Beiträge
973
nimm mal static weg:

Code:
static NSString *CellIdentifier = @"Cell";
 

exitus

Antonowka
Registriert
29.12.07
Beiträge
359
geht nicht, da mault er weil "cell" nicht deklariert ist. also die methode nicht vollständig ist.
meno....

willste mal den kompletten quellcode von der datei sehen? also nicht nur diesen kleinen ausschnitt ^^?
 

philo

Roter Stettiner
Registriert
13.10.04
Beiträge
973
Code:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
die ganze art, wie du die Tabelle mit o.g. methode füllst, sieht irgendwie sehr kompliziert aus.

vor das [cell setText:mad:"Cake"]; gehört, glaube ich ein else, denn sonst wird ja immer "Cell", genommen, so wie es dir passiert. return 2 in der anderen methode muss dennoch rein.
 

exitus

Antonowka
Registriert
29.12.07
Beiträge
359
ich habe auf die sources vom Xcode zurückgegriffen und dort wurde die header datei schon so erstellt, welches man ja auch an den kommentaren sieht. in wie weit meinst du das mit der else ? komm gerade nicht ganz mit, was wahrscheinlich an der uhrzeit liegt.... (sitze schon 3 stunden vor dem problem :( )
 

philo

Roter Stettiner
Registriert
13.10.04
Beiträge
973
ich rede ja von keiner header datei. poste doch mal das ganze projekt (ordner zippen) und poste es, dann geht es schneller. und dann gehe ich ins bett...
 

Thaddäus

Golden Noble
Registriert
27.03.08
Beiträge
18.363
Wenn du den Build Ordner löschst, dann hast du im Board keine Probleme... ;)
 

exitus

Antonowka
Registriert
29.12.07
Beiträge
359
joa immer mit der ruhe, ich bekomm nur langsam ein schlechtes gewissen, da ich dich vom schlafen gehen abhalte.... ^^ sorry ;)
 

philo

Roter Stettiner
Registriert
13.10.04
Beiträge
973
keine Sorge. so habe ich mich mal ein bisschen mit Tables beschäftigz ;)

Code:
// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 2;
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
	NSString *celltext = nil;

	switch ([indexPath indexAtPosition:1]) {
		case 0:
			celltext = @"Cell";
			break;
		case 1:
			celltext = @"Cake";
			break;
			
		default:
			break;
	}
	
	static NSString *CellIdentifier = @"Cell";
    
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
	[cell setText:celltext];

	
    return cell;


}

damit zeigt er jetzt 2 verschiedene Zeilen an.
 

philo

Roter Stettiner
Registriert
13.10.04
Beiträge
973
Code:
// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 2;
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
	NSString *celltext = nil;

	switch ([indexPath indexAtPosition:1]) {
		case 0:
			celltext = @"Cake";
			break;
		case 1:
			celltext = @"Pic";
			break;
			
		default:
			break;
	}
	
	static NSString *CellIdentifier = @"Cell";
    
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
	[cell setText:celltext];

	
    return cell;


}

// Override to support row selection in the table view.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


	switch ([indexPath indexAtPosition:1]) {
		case 0:
		{
			CakeViewController *cakeView =[[CakeViewController alloc] initWithNibName:@"Cake" bundle:nil];
			self.cakeViewController = cakeView;
			[cakeView release];
			[self.navigationController pushViewController:self.cakeViewController animated:YES];

			break;
		}
		case 1:
		{
			NextViewController *nextView = [[NextViewController alloc] initWithNibName:@"nextView" bundle:nil];
			self.nextViewController = nextView;
			[nextView release];
			[self.navigationController pushViewController:self.nextViewController animated:YES];				

			break;
		}
		default:
			break;
	}
	
	
	
//	if(self.cakeViewController == nil){
//		CakeViewController *cakeView =[[CakeViewController alloc] initWithNibName:@"Cake" bundle:nil];
//		self.cakeViewController = cakeView;
//		[cakeView release];
//	}
//	[self.navigationController pushViewController:self.cakeViewController animated:YES];
//
//	if(self.nextViewController == nil){
//		NextViewController *nextView = [[NextViewController alloc] initWithNibName:@"nextView" bundle:nil];
//		self.nextViewController = nextView;
//		[nextView release];
//	}
//	[self.navigationController pushViewController:self.nextViewController animated:YES];				
}

nochmal neu.

EDIT: sind nur drei Methoden verändert. Ersetzte die und sag mal es läuft.
EDIT2:

// if(self.cakeViewController == nil)
// if(self.nextViewController == nil)

könnten vielleicht noch rein, damit nicht jedes mal das nib neu geladen werden muss.
 
  • Like
Reaktionen: exitus

exitus

Antonowka
Registriert
29.12.07
Beiträge
359
wow danke ! ich werde das direkt mal testen :)

echt spitze von dir :) vielen dank für die mühe :)

Edit: Boar spitze ! du bist mein held :) klasse ! vielen vielen dank ! nun werde ich mir das von dir zusammen gebaute genaustens angucken und studieren :)

und dann mal schauen ob ich noch weitere case's einfügen kann :p nochmals vielen dank :)

und wünsche nun eine gute nacht :)
 

philo

Roter Stettiner
Registriert
13.10.04
Beiträge
973
Code:
//[cell setText:celltext];textLabel
[cell.textLabel setText:celltext];

bitte. und wenn du das oben noch änderst, zeigt er sogar keine Warnung mehr an. (setText war veraltet)

schau dir auch mal an, wie NSIndexPath funktioniert. Wenn du auf "help" in XCode gehst, siehst du den Punkt Documentation, da findest du alle Klassen mit ihren Properties und Methoden...falls du es noch nicht wusstest.

Gute Nacht ebenfalls!