开发者

how do i add individual data to individual cells?

开发者 https://www.devze.com 2023-01-30 09:46 出处:网络
How do make the individual cells go to different View Controller. Right now, using the method im using, if i click the first cell, it takes me to a view controller where i have a pic. now if i go back

How do make the individual cells go to different View Controller. Right now, using the method im using, if i click the first cell, it takes me to a view controller where i have a pic. now if i go back and click the second cell, it takes me to the same view controller. How do i change this so that all the other individual cells go to individual view controller? what do i add or what do i configure?

here my code:

// 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:UITableV开发者_StackOverflow中文版iewCellStyleDefault 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];
}


One fairly easy way is in your tableView:didSelectRowAtIndexPath: method. You can check the index path parameter and execute different code paths. Something like:

-(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;
   }
}

Like most design choices, this is just an example of one possible approach. That's the best I can do in this general case.


I would create a new view controller each time instead of using the same one and just changing its properties, more like the example that you have commented out in tableView:didSelectRowAtIndexPath:. This will only work if you don't access your controller from anywhere other than these methods.

First: Remove bookDetailViewController.title = [NSString stringWithFormat:@"%@" , [breakdownArray objectAtIndex:row]]; from your tableView:cellForRowAtIndexPath: method (you should do this anyway, since it is just taking more processor time)

Second: Remove the bookDetailController property from your class. You won't need it anymore.

Third: Implement tableView:didSelectRowAtIndexPath: as follows:

- (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];
}
0

精彩评论

暂无评论...
验证码 换一张
取 消