NSSegmentedControlで最後にクリックされたセグメントのタグ番号を得るには

NSSegmentedControlで最後にクリックされたセグメントのタグ番号を得るには、[NSSegmentedControl selectedTag]で取得出来そうだが、実際には出来ない。

このメソッドで帰ってくる値は、segmentに設定されたタグではなくNSSegmentedControlのタグ。

これはおそらく、

  1. segmentはcellではない
  2. segmentは複数選択が可能である

の2点の理由で、意図的にそのような仕様になったのだと思われる。

クリックされたセグメントに設定されたtagを得るには以下のコードを追加して、[NSSegmentedControl lastClikedSegmentedTag]を呼出せば良い。

@implementation NSSegmentedControl (MTLControlItemEnabler)

- (NSInteger) lastClikedSegmentedTag
{
    NSSegmentedCell* theCell = [self cell];

    return [theCell tagForSegment:[theCell selectedSegment]];;
}

@end