0

カスタムセルとセクションヘッダーを持つTableViewがあります。ヘッダーには国が表示され、カスタム セルには都市が表示されます。

次のようになります。

アメリカ合衆国

  • ニューヨーク

  • ロサンゼルス

ドイツ

  • ベルリン

  • フランクフルト

すべてのセルにボタンがあります。押すとナビゲートされ、都市名が詳細ビューにプッシュされます。

問題は、ボタンを押した後に都市名を特定する方法がわからないことです。

解決策はありましたが、もう機能しません:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
    StandortCell *cell = (StandortCell *)[tableView dequeueReusableCellWithIdentifier:@"ortCell"];
    [cell.detailButton setTag:indexPath.row];
    cell.ortLabel.text = [managedObject valueForKey:@"stadtname"];
}


- (IBAction)detailButton:(id)sender {

    UIView *contentView = [sender superview];
    UITableViewCell *cell = (UITableViewCell *)[contentView superview];
    NSIndexPath *cellIndexPath = [self.tableView indexPathForCell:cell];

    NSInteger section = cellIndexPath.section;

        UIButton * myButton = sender;
    int row=myButton.tag;

   NSIndexPath * indexPath = [NSIndexPath indexPathForRow:row inSection:section];

    StrasseViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"strasse"];
    self.selectedStandort = [self.fetchedResultsController objectAtIndexPath:indexPath];
    detail.currentStandort = self.selectedStandort;
    [self.navigationController pushViewController:detail animated:YES];

}

古いコードを使用すると、最初のセクションに正しい通りの行が表示されます。他のセクション(国)は検出されませんでした。

3 番目のセクションで最初の都市を選択したとき。最初のセクションの最初の都市が表示されます。

あなたが私を助けてくれることを願っています。

4

2 に答える 2

1

これを使用して、目的が解決されることを願っています。

ビューコントローラーでボタンを押すメソッドを作成します

  • (IBAction)detailButton:(UIButton *)送信者 {

    CustomUITableViewCellName *cell = (CustomUITableViewCellName *)[[送信者スーパービュー]スーパービュー]; NSIndexPath *cellIndexPath = [YOUR_TABLE_NAME indexPathForCell:cell];

}

iOS 7 の場合、別のスーパービューを追加します。

このようにして IndexPath を取得し、indexPath.row または indexPath.section を使用して現在の行を取得します。

タイトルは、sender.title プロパティを使用して取得できます。

この indexPath を配列で使用して、必要な詳細を取得できます。

于 2013-11-15T11:08:17.047 に答える
0

行とセクションの情報を別々に送信する必要があるため、タグを次のようにします。

タグ = 行 * 1000 + セクション。

タグから行 = タグ/1000 セクション = タグ %1000 を使用してセクションと行の値を取得します。

この値を使用して正しいインデックス パスを作成するか、それを取得するための 2 分よりも優れたソリューションを見つけます。

その回避策は正しいことに注意してください

  1. サブクラス UIButton
  2. その中にindexpathプロパティを追加します
  3. クラスを作成してボタン オブジェクトを作成し、タグ セットの indexpath プロパティを挿入します。

CustomButton.h で

@interface CustomButton :UIButton
@property (nonatomic,assign)NSIndexPath *path;
@end

CustomButton.m で

@implementation CustomButton
@synthesize path;
@end

テーブル ビュー セルでこのカスタム ボタンを使用し、タグ セット パス プロパティの代わりに

于 2013-11-15T11:02:59.583 に答える