我想从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;
}
}
答案 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:
致电。