Как вы можете выдвинуть новое представление с сгруппированной таблицей? - PullRequest
0 голосов
/ 04 мая 2010

Я пытался выдвинуть новое представление, когда ячейка нажата, но абсолютно ничего не происходит. Я полагал, что сгруппированный стиль выдвигается так же, как обычный. Вот мой код:

-(void)viewDidLoad {
[super viewDidLoad];
contactArray = [[NSArray alloc] initWithObjects:@"iPhone",@"iPod",@"MacBook",@"MacBook     Pro",nil];
shareArray = [[NSArray alloc] initWithObjects:@"Flex",@"AIR",@"PhotoShop",@"Flash",nil];

}

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


// Customize the number of rows in the table view.
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if(section == 0)
    return [contactArray count];
else
    return [shareArray count];
}

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
if(section == 0){
    return @"Contact";
}else{
    return @"Share";
}
}

-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
if(section == 0){
    return @"Footer for Apple Products";
}else{
    return @"Footer for Adobe Softwares";
}
}


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

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}

// Set up the cell...
if(indexPath.section == 0){
    cell.text = [contactArray objectAtIndex:indexPath.row];
}else{
    cell.text = [shareArray objectAtIndex:indexPath.row];
}
return cell;

}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//NextViewController *nextController = [[NextViewController alloc] initWithNibName:@"NextView" bundle:nil];
//[self.navigationController pushViewController:nextController animated:YES];
if([contactArray objectAtIndex:indexPath.row] == @"iPhone"){
    LandscapeHydrogen *abo = [[LandscapeHydrogen alloc] initWithNibName:@"LandscapeHydrogen" bundle:nil];
[self.navigationController pushViewController:abo animated:NO];
[abo release];
}
}

Любая помощь приветствуется.

Ответы [ 3 ]

2 голосов
/ 04 мая 2010

Вы можете поставить точку останова на didSelectRowAtIndexPath, чтобы проверить, верно ли утверждение if.

Попробуйте изменить

if([contactArray objectAtIndex:indexPath.row] == @"iPhone"){

до

if([[contactArray objectAtIndex:indexPath.row] isEqualToString:@"iPhone"]){
1 голос
/ 10 октября 2012
  YourNextViewController  *   nextViewController = [[YourNextViewController alloc] initWithNibName: @"YourNextViewController" bundle: nil];  

switch (indexPath.section) {
    case 0:
        nextViewController.title = [_contactArray objectAtIndex: [indexPath row]];
        break;

    case 1:
        nextViewController.title = [_shareArray objectAtIndex: [indexPath row]];
        break;

    default:
        break;
}

[[self navigationController] pushViewController:nextViewController animated:YES];
}
0 голосов
/ 05 мая 2010

Решено с

else if (indexPath.section == 1 & indexPath.row == 0){
        FaceBook *nextController = [[FaceBook alloc] initWithNibName:@"FaceBook" bundle:nil];
        [self.navigationController pushViewController:nextController animated:YES];
...