ホーム>source

各行にボタンがあるテーブルビューがあります。データをボタンのタイトルとして保存しています。

必要なもの :選択したボタンのタイトルを目的のView Controllerに渡したい。

コード :

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSDictionary *dict = _json[indexPath.row]
    [cell.bRedeem setTitle:dict[@"n_id"] forState:UIControlStateNormal];
}
- (IBAction)redeemClicked:(UIButton *)sender {
    UIButton *button = (UIButton *)sender;
    _nID = button.currentTitle;

}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([segue.identifier isEqualToString:@"showOffers"]) {
        offerList *details = (offerList *)segue.destinationViewController;
        details.nearID = _nID;
    }
}

あなたの答え
  • 解決した方法 # 1

    cellForRowAtIndexPathメソッドにButtonターゲットを追加できます。

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        [cell.btnOne addTarget:self action:@selector(ButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
        [cell.btnOne setTag:indexPath.row];
    }
    
    

    ボタンアクションでは、[sender tag]値を使用してJson配列の値を取得できます。

    -(IBAction)ButtonClicked:(id)sender
    {
        NSDictionary *dict = [JsonArray objectAtIndex:[sender tag]];
        NSLog(@"Selected Dictionary : %@",dict);
        NSString * storyboardName = @"Main"; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil]; 
        NewViewController * NewView = [storyboard instantiateViewControllerWithIdentifier:@"NewViewControllerID"]; 
        NewView.NearId = [dict valueForKey@"n_id"]; 
       [self.navigationController pushViewController:NewView animated:YES];
    }
    
    

  • 解決した方法 # 2

    TableViewセルデリゲートを実装します。

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ javascript - onEffectがonChangeによってトリガーされない