как добавить отдельные данные в отдельные ячейки? - PullRequest
0 голосов
/ 15 декабря 2010

Как заставить отдельные ячейки переходить на другой View Controller.Прямо сейчас, используя метод, который я использую, если я щелкаю первую ячейку, это приводит меня к контроллеру представления, где у меня есть рис.Теперь, если я вернусь и нажму на вторую ячейку, это приведет меня к тому же контроллеру представления.Как я могу изменить это так, чтобы все другие отдельные ячейки шли к отдельному контроллеру представления?что мне добавить или что я настраиваю?

вот мой код:

// 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] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell...

 NSUInteger row = [indexPath row];
 cell.textLabel.text = [breakdownArray objectAtIndex:row];

 bookDetailViewController.title = [NSString stringWithFormat:@"%@" , [breakdownArray objectAtIndex:row]];

    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Navigation logic may go here. Create and push another view controller.
 /*
  <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
     // ...
     // Pass the selected object to the new view controller.
  [self.navigationController pushViewController:detailViewController animated:YES];
  [detailViewController release];
  */

 NSInteger row = [indexPath row];
 if (self.bookDetailViewController == nil); {
  BookDetailViewController *aBookDetail = [[BookDetailViewController alloc] initWithNibName:@"BookDetailView" bundle:nil];
  self.bookDetailViewController = aBookDetail;

  [aBookDetail release];

 }

 bookDetailViewController.title = [NSString stringWithFormat:@"%@" , [breakdownArray objectAtIndex:row]];

 Books2010AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
 [delegate.breakdownNavController pushViewController:bookDetailViewController animated:YES];
}

Ответы [ 2 ]

1 голос
/ 15 декабря 2010

Один довольно простой способ в вашем tableView: didSelectRowAtIndexPath: метод. Вы можете проверить параметр пути индекса и выполнить разные пути кода. Что-то вроде:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath )indexPath {
   switch(indexPath.row) {
       case 1:
           [self.navigationController pushViewController:someViewController animated:YES];
           break;
       case 2:
           [self.navigationController pushViewController:someOtherViewController animated:YES];
           break;
   }
}

Как и большинство вариантов дизайна, это всего лишь пример одного из возможных подходов. Это лучшее, что я могу сделать в этом общем случае.

0 голосов
/ 15 декабря 2010

Я бы каждый раз создавал новый контроллер представления вместо того, чтобы использовать один и тот же и просто изменяя его свойства, больше как в примере, который вы закомментировали в tableView: didSelectRowAtIndexPath :.Это будет работать только в том случае, если вы не обращаетесь к контроллеру из других мест, кроме этих методов.

Первое: удалите bookDetailViewController.title = [NSString stringWithFormat:@"%@" , [breakdownArray objectAtIndex:row]]; из вашего tableView: cellForRowAtIndexPath: метод (вы должны сделать это в любом случае, так как он простобольше процессорного времени)

Второе: удалите свойство bookDetailController из вашего класса.Вам это больше не понадобится.

Третье: реализовать tableView: didSelectRowAtIndexPath: следующим образом:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)path {
    BookDetailViewController *bookDetailViewController = [[BookDetailViewController alloc] initWithNibName:@"BookDetailView" bundle:nil];
    NSInteger row = path.row;
    bookDetailViewController.title = [NSString stringWithFormat:@"%@" , [breakdownArray objectAtIndex:row]];
    //Any other setup on view controller
    Books2010AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
    [delegate.breakdownNavController pushViewController:bookDetailViewController animated:YES];
    [bookDetailViewController release];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...