1

i want to pass a data to anotherViewController from TableView.But i don't know how to pass the data.here is my code.

    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
     PeripheralManager    * objSelectedDevice=[device objectAtIndex:indexPath.row];

   // [self prepareForSegue:@"TableDetails" sender:objSelectedDevice];
   // detailViewObject.objCurrentDevice=objSelectedDevice;
}

-(void) prepareForSegue:(UIStoryboardSegue *)segue selectedDevice:(PeripheralManager *)pobjSelectedDevice sender:(id)sender
{


    if ([segue.identifier isEqualToString:@"TableDetails"]) {

        MeBleDetailViewController *detailViewObject=segue.destinationViewController;


        detailViewObject.dataArray=device;

        detailViewObject.title=@"Supported Services";

        detailViewObject.objCurrentDevice=pobjSelectedDevice;
    }
}
prem
  • 137
  • 11

2 Answers2

3

You need to make an instance variable, set it before making the call to performSegueWithIdentifier:, and grab its value in prepareForSegue:, like this:

In the header:

@interface MyViewController {
    //... your ivars ...
    PeripheralManager *selectedManager;
}
//... more stuff ...
@end

In the implementation:

-(void)tableView:(UITableView *)tableView
    didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // set your ivar
    selectedManager = [device objectAtIndex:indexPath.row];
    [self performSegueWithIdentifier:@"TableDetails" sender:self];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"TableDetails"]) {

        MeBleDetailViewController *detailViewObject=segue.destinationViewController;

        detailViewObject.dataArray=device;

        detailViewObject.title=@"Supported Services";

        // read your ivar
        detailViewObject.objCurrentDevice=selectedManager;
    }
}
Sergey Kalinichenko
  • 714,442
  • 84
  • 1,110
  • 1,523
2

You don't call prepareForSegue: in your code; call performSegueWithIdentifier: instead and you will have prepareForSegue: called for you.

Phillip Mills
  • 30,888
  • 4
  • 42
  • 57