2012-02-27 6 views
0

ここにコードを入力します。実際にボタンであるカスタムUIViewを追加したUITableViewCellがあります。カスタムUIViewをプログラムで追加し、その.tag = 4を設定しました。ボタンを描画してタグを設定するコードは、cellForRowAtIndexPathで実行されています。UITableViewCellのカスタムUIViewへのポインタは、0を返します。

イベントが発生したという通知を受け取る関数があります。この関数では、ボタンのテキストを変更できるように、UITableViewCellのボタンへのポインタを取得しようとしていますが、 viewWithTagプロパティは0として返され続けます。

アイデア?

これは、ボタンがコードに追加する方法です。

CustomBadge *customBadge1 = [CustomBadge customBadgeWithString:[NSString stringWithFormat:@"%d", [plugin items]]<br>withStringColor:[UIColor whiteColor] 
                 withInsetColor:[UIColor redColor] 
                 withBadgeFrame:YES 
                withBadgeFrameColor:[UIColor whiteColor] 
                  withScale:1.0 
                  withShining:YES]; 

[customBadge1 setFrame:CGRectMake(cell.frame.size.width - 80, 10, 30, 25)]; 
customBadge1.tag = 4; 
[cell addSubview:customBadge1]; 

は、その後、デリゲートの機能で、これは私がボタンにポインタを取得しようとしています方法です:

CustomBadge* itemBadge = (CustomBadge*) [[[pluginTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]] contentView] viewWithTag:4]; 
+1

すべてのサブビューをforeachし、.tagを確認することができます。別のオプションは、オブジェクトへのポインタを常に持つようにシングルトンを作ることです。 3番目のオプションは、私たちがあなたを助けるためにここにいくつかのコードを投稿することです。 – Melvin

+0

ありがとうメルビン。私はコードを投稿しようとしていましたが、私はそれを私のMacに持っていません。シングルトンは良い考えです! –

答えて

1

あなたのテーブルビューは編集を許可していますか?ある時点で、編集モードに切り替わったときにiOSが独自のビューに番号の小さいタグを割り当てることに気付きました。あなたのタグを盗んでいる可能性があります...番号の付いたタグを試してみるか、カスタムUITableViewCellサブクラスを使用してUIViewにIBOutletを取得してください(私はいつもこのオプションのために行こうと思います)。

0

ああFFS。

セルのサブビューにアイテムを追加するときに「.contentview」を忘れてしまった。

返信のためにMelvinとjsdに感謝します。

関連する問題