0

どのセグメント化されたコントロールがイベントをトリガーしたかを確認する方法を知っている人はいますか?セグメント化されたコントロールを含む2つのセルを作成しています。メソッドsegmentedControlIndexChangedで、どのセグメント化されたコントロールがイベントをトリガーしたかを知りたいです。タグを使用しましたが、機能しません。私はこれが初めてです。よろしくお願いします。

セグメント化されたコントロールを含むセルのコード:

 cellParinti = [[Cell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
cellParinti.textLabel.text = @"Parinti";
cellParinti.label.text = dog?dog.parinti:@"";
cellParinti.segmentedControl.selectedSegmentIndex = [dog.parinti isEqualToString:@"da"] ? 0 : 1;
cellParinti.segmentedControl.tag = 1;
[cellParinti.segmentedControl addTarget:self action:@selector(segmentedControlIndexChanged:) forControlEvents:UIControlEventValueChanged];
[cellParinti addSubview:cellParinti.textLabel];
[cellParinti addSubview:cellParinti.label];
[cellParinti addSubview:cellParinti.segmentedControl];


cellPedigree = [[Cell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
cellPedigree.textLabel.text = @"Pedigree";
cellPedigree.label.text = dog?dog.pedigree:@"";
cellParinti.segmentedControl.tag = 2;
cellPedigree.segmentedControl.selectedSegmentIndex = [dog.pedigree isEqualToString:@"da"] ? 0 : 1;
[cellPedigree.segmentedControl addTarget:self action:@selector(segmentedControlIndexChanged:) forControlEvents:UIControlEventValueChanged];

[cellPedigree addSubview:cellPedigree.textLabel];
[cellPedigree addSubview:cellPedigree.label];
[cellPedigree addSubview:cellPedigree.segmentedControl];

トリガーされたメソッドのコード:

-(void) segmentedControlIndexChanged:(id)sender{
NSIndexPath *indexPath;

UISegmentedControl * sg1 = (UISegmentedControl *)sender;

// reload data based on the new index
if (sg1.tag == 1){
cellParinti.label.text = sg1.selectedSegmentIndex == 0 ? @"da" : @"nu";
dog.parinti = sg1.selectedSegmentIndex == 0 ? @"da" : @"nu";
}
else {
    cellPedigree.label.text = sg1.selectedSegmentIndex == 0 ? @"da" : @"nu";
    dog.pedigree = sg1.selectedSegmentIndex == 0 ? @"da" : @"nu";
}

}

4

1 に答える 1

1

あなたが持っている

cellParinti.segmentedControl.tag = 2;

私はこれがすべきだと思います

cellPedigree.segmentedControl.tag = 2;

これはコードのタイプミスであり、正しいタグを取得できません。

于 2012-11-06T15:13:28.523 に答える