1

私はTableViewからanotherViewControllerにデータを渡したいのですが、データを渡す方法がわかりません.hereが私のコードです。

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

2 に答える 2

3

次のように、インスタンス変数を作成し、 を呼び出す前に設定しperformSegueWithIdentifier:、 でその値を取得する必要がありますprepareForSegue:

ヘッダー内:

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

実装では:

-(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;
    }
}
于 2012-10-27T12:00:00.653 に答える
2

prepareForSegue:コードを呼び出す必要はありません。performSegueWithIdentifier:代わりに電話prepareForSegue:してください。

于 2012-10-27T11:50:13.927 に答える