2012-02-09 9 views
1

自分のIBにNSSegmentedControlボタンを実装しようとしています。NSSegmentedControlのタグを選択する

私はそれはまた、最初の「セグメント」であるNSSegmentedControl *editCartButton;

に接続されている- (IBAction)editCart:(id)sender;

に接続されている「 - 」カートの値を小さくするためのボタン。 2番目の「セグメント」は、カートの値を増やすための「+」ボタンです。

私はそうのような「送信者」の値を使用しようとすると: -[NSTableView selectedSegment]: unrecognized selector sent to instance 0x100622aa0

マイボタンはNSTableViewの内側に位置しています:[sender selectedSegment]を、私はエラーを取得します。

私も試してみた:私は私の条件によってそれを実行すると[[editCartButton cell] selectedTag]

、それは常に(ヌル)の値を返します。 私は取得する予定の0と1の特定のタグを取得したいが、適切なアクションを見つけることはできません。

大変感謝しています。 IBActionで

答えて

-1

は(UISegmentedControl *)と(ID)を交換してみ

+0

これを実行すると、「予想されるタイプ」 – Rail24

+0

というエラーが発生します。これは、プロジェクトがiOS上にある場合にのみ機能します。 'NSSegmentedControl'に言及すると、ターゲットOSがOS Xであると仮定しています。 – MaddTheSane

1

この:

-[NSTableView selectedSegment]: unrecognized selector 
           sent to instance 0x100622aa0 

基本的にsenderあなたはそれだと思うNSSegmentedControlではないことを示しています。 senderNSTableViewです。したがって、間違った方法で接続するか、またはNSSegmentedControlの割り当てが解除され、現在メモリの場所にNSTableViewが見つかる重大なメモリ管理の問題があります。

NSLog(@"editCart, sender = %@",sender); 

はこれを確認するために:

-(IBAction)editCart:(id)senderでは、行を追加することができます。あなたのコード内の他の場所にこのようにNSLog行をドロップして、何が起きているのかを確認することができます。

+0

私はこれを行い、' sender'が確かに 'NSTableview'であることを確認しました。 私はすべてを再接続し、同じエラーが発生しています。他のアイデア?うーん、多分私はそれが正常に動作するか理解していないよ – Rail24

+0

、私がやるべきこと: を - 'IBOutlet NSSegmentedControl * editCartButtonのようなものにNSSegmentedCellの接続;' または - ' のような関数にNSSegmentedCellを接続します - ( IBAction)editCart:(id)sender; ' – Rail24

+0

NSSegmentedCellの* action *をビューコントローラの' IBAction'コンセントにリンクする必要があります。 IBでは、A)オブジェクトのみを参照するもの(コードでは「IBOutlet」と表記)、B)ターゲット(オブジェクトであるもの)およびセレクタ(コードでは「IBAction」とマークされたもの)を参照するものメソッド名はセレクタ、包含オブジェクトはオブジェクト)。 (ただし、メモリの問題が発生している可能性がありますが、あなたのリンクを混乱させる。私たちはあなたが投稿したものからそれを見ることはできません。) – mvds

-1

Seashore(ネイティブOS X APIへのGIMPのポート)のアップデートに取り組んでも、同様の問題がありました。

まず、あなたがNSSegmentedControlのセルオブジェクトを取得する必要があります。

[segCell setTag:200 forSegment:2]; 

詳細情報はApple's documentationで提供されています:次に

NSSegmentedControl *segControl = ... 
NSSegmentedCell *segCell = [segControl cell]; 

を、あなたが変更したいセグメントのタグを設定します。

関連する問題