错误:指针不兼容(数据未传递给另一个viewcontroller)

时间:2012-10-27 11:45:22

标签: objective-c ios ios5 uitableview

我想从TableView将数据传递给anotherViewController。但我不知道如何传递数据。这是我的代码。

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

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:2)

您不需要在代码中调用prepareForSegue:;请拨打performSegueWithIdentifier:,然后您就会prepareForSegue:致电。