-1

テーブルビューセルを選択した後、データのプロパティを渡したいのですが、ガイドしてください。すでにdetailviewcontrollerを設定しています。DataArrayはdetailviewcontrollerの可変配列です。peripheralManagerはNSbjectです。Peripheralはデバイスです。

- (void)viewDidLoad
{
  [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
  peripheralManager=[[PeripheralManager alloc]init];
  self.MeBle.enabled=NO;
  device=[[NSMutableArray alloc]init];

}
- (void)peripheralManagerDidConnectPeripheral:(PeripheralManager *)peripheral
{
  NSLog(@"%@",peripheral.deviceName);
  [device addObject:[NSString stringWithFormat:@" %@ ",peripheral.deviceName]];    
   //   [device addObject:peripheral];
  [self.deviceTable reloadData];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  static NSString *simpleTableIdentifier=@"Cell";

  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
  if(cell==nil)
{
    cell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
   cell.textLabel.text=[device objectAtIndex:indexPath.row];
   return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   //DetailViewController *detail=[self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
   // [self.navigationController pushViewController:detail animated:YES];

   //[self performSegueWithIdentifier:@"TableDetails" sender:[device objectAtIndex:indexPath.row]];

}

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


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

    DetailViewController *detail=segue.destinationViewController;
    detail.dataArray=device;


}
}
4

2 に答える 2

1

prepareForSegueで、現在の選択インデックスを取得する必要があります。

NSIndexPath *indexPath = [self.deviceTable indexPathForCell:sender];

これで、このインデックスだけを宛先コントローラーに渡すか、現在の配列から特定のオブジェクトを渡すことができます。

detail.idx = [indexPath row];

編集:実装する必要はありません

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

ちょうどで

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

これに変更:

detailViewObject.objCurrentDevice=[device objectAtIndex:[[self.deviceTable indexPathForCell:sender] row]];
于 2012-10-28T08:56:09.313 に答える
1

インターフェイスビルダーで、seagueランタイム属性セクションを確認してください。uは複数のセルを同じスタイルで作成できますが、識別子が異なり、cellForRowAtIndexPathはセルをその行で返します。

于 2012-10-28T17:13:45.233 に答える