开发者

How to push view depending on the row selection?

How to push view depending on the row selection?

/*****UPDATED** ***/

How to push view depending on the row selection?

How to push view depending on the row selection?

r.com/YH3cm.png

I am trying to figure out in the above image, how will we know if the user has selected Date or Track. /UPDATED/ The data I am receving is through a select query and I create an array to store the list. It is dynamic and not necessary limited to 开发者_开发问答two fields, it can have 10 fields also. How will I know which row is selected and how will I push the data on to the next view.

Like in didSelectRowAtIndexPath, how should I push the date or track field on the next view?

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

if (dvController == nil) 
  dvController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];

Teat *obj = [appDelegate.coffeeArray objectAtIndex:indexPath.row];

dvController.obj = obj;
 // Pass the selected object to the new view controller.
 [self.navigationController pushViewController:dvController animated:YES];

   }


It's still not very clear what you're trying to do. If you want to push a certain view controller depending on what the content of the cell is, but there is no definite arrangement of the rows, I would use the row index to access the array that is the source of your data. Some very loose code:

WhateverObject* selectedObject= (WhateverObject*)[tableDataSourceArray objectAtIndex:indexPath.row];
if( [selectedObject hasAnAttributeYouCareAbout] )
{
    MyViewController* theCorrectController= whicheverViewControllerYouWant;
    theCorrectController.anAttribute= aValue;
    [self.navigationController pushViewController:theCorrectController animated:YES];
}

And here's how you can define your UIViewController subclass MyViewController with specific attributes. In the .h file:

@interface MyViewController : UIViewController {

     int anAttribute;
}

@property int anAttribute

@end

In the .m file:

@implementation MyViewController

@synthesize anAttribute;

@end

You can have as many attributes as you want of whatever type, and then you can set them with aViewController.anAttribute as above.


Create objects - dateInfoViewController and trackInfoViewController and then...

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

NSInteger row = [indexPath row];
if (row==0)
{
if (self.dateInfoViewController == nil)
     {
    DateInfoViewController *temp = [[DateInfoViewController alloc] init];
    self.dateInfoViewController = temp;
    [temp release];
    }



else {
    dateInfoViewController.title= [ NSString stringWithFormat:@"%@", [sessionInfoDetailsArray objectAtIndex:row]];
    YourAppDelegate *delegate = [[UIApplication sharedApplication]delegate];

    [delegate.sessionNavigationController pushViewController:dateInfoViewController animated:YES]; 
    }
}

  if (row==1)
{
    if (self.vetInfoViewController == nil)
    {
       TrackInfoViewController *temp = [[TrackInfoViewController alloc] init];
        self.trackInfoViewController = temp;
        [temp release];
    }


    else {
        trackInfoViewController.title= [ NSString stringWithFormat:@"%@", [sessionInfoDetailsArray objectAtIndex:row]];
        YourAppDelegate *delegate = [[UIApplication sharedApplication]delegate];
        [delegate.sessionNavigationController pushViewController:trackInfoViewController animated:YES]; 
    }
}


I fear it's not perfectly clear what do you want to do... if you need to push a different view depending on the selected row you may simply do something like

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

if (indexPath.row == 0) 
    //push view 1
else 
    //push view 2

}

UPDATE: calling indexPath.row you get the index of the selected row. I guess is up to you to decide what to do depending on what row is selected. To pass this information to the next view you may simply think of a @property field to set, a method to call or a custom init method for the view controller you are pushing. What is the problem with the code you posted?

0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜