[解決済み] UITableViewCellのaccessoryViewにカスタム画像を使用し、UITableViewDelegateに応答させる。
質問
私はカスタムで描画されたUITableViewCellを使用しています。
accessoryView
. アクセサリビューのための私の設定は、次のような方法で発生します。
UIImage *accessoryImage = [UIImage imageNamed:@"accessoryDisclosure.png"];
UIImageView *accImageView = [[UIImageView alloc] initWithImage:accessoryImage];
accImageView.userInteractionEnabled = YES;
[accImageView setFrame:CGRectMake(0, 0, 28.0, 28.0)];
self.accessoryView = accImageView;
[accImageView release];
また、セルが初期化される際にも
initWithFrame:reuseIdentifier:
というプロパティを設定するようにしました。
self.userInteractionEnabled = YES;
残念ながら、私のUITableViewDelegateでは、私の
tableView:accessoryButtonTappedForRowWithIndexPath:
メソッド(これを10回繰り返してみてください)がトリガーされないのです。デリゲートは間違いなく適切に配線されています。
何が足りないのでしょうか?
皆さん、ありがとうございます。
どのように解決するのですか?
悲しいことに、そのメソッドは、定義済みのタイプのいずれかを使用するときに提供される内部ボタンタイプがタップされない限り、呼び出されません。独自のものを使うには、アクセサリをボタンや他のUIControlのサブクラスとして作成する必要があります(私は
-buttonWithType:UIButtonTypeCustom
を使用して、UIImageViewを使用するのではなく、ボタンの画像を設定することをお勧めします)。
これは、標準のウィジェットを十分にカスタマイズしています(私たちのティールカラーに合わせるために、ほんの少し)。
まず、この関数は、私たちのカスタムグラフィックを使用して、新しい詳細開示ボタンを返します。
- (UIButton *) makeDetailDisclosureButton
{
UIButton * button = [UIButton outpostDetailDisclosureButton];
[button addTarget: self
action: @selector(accessoryButtonTapped:withEvent:)
forControlEvents: UIControlEventTouchUpInside];
return ( button );
}
ボタンが終了するとこのルーチンが呼び出され、アクセサリボタン用の標準的なUITableViewDelegateルーチンにフィードされます。
- (void) accessoryButtonTapped: (UIControl *) button withEvent: (UIEvent *) event
{
NSIndexPath * indexPath = [self.tableView indexPathForRowAtPoint: [[[event touchesForView: button] anyObject] locationInView: self.tableView]];
if ( indexPath == nil )
return;
[self.tableView.delegate tableView: self.tableView accessoryButtonTappedForRowWithIndexPath: indexPath];
}
この関数は、ボタンから提供されるイベントからタッチのテーブルビュー内の位置を取得し、その時点の行のインデックスパスをテーブルビューに問い合わせることで行の位置を特定します。
関連
-
クラッシュエラー libc++abi.dylib: NSException 型のキャッチできない例外で終了_allanGold のブログ - ProgrammerITS401
-
iOSコンパイルポッドでエラー CocoaPods could not find compatible versions for pod "XXXXX" が報告される。
-
JenkinsがIOSを自動パッケージングしてモミを配布
-
[解決済み] 文字列の長さを取得する
-
[解決済み] UITextViewのプレースホルダー
-
[解決済み] iPhone UITextField - プレースホルダーの文字色を変更する
-
[解決済み] iPhone 5の画面解像度に対応したアプリを開発・移行するには?
-
[解決済み] UITextFieldの最大文字数を設定します。
-
[解決済み] SwiftでURLから画像を読み込む/ダウンロードする
-
[解決済み] iphoneアプリのベータテストはどのように行うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 文字列の長さを取得する
-
[解決済み] 奇妙な不要なXcodeログを隠す
-
[解決済み] IBOutletsはARCのもとで強くなるべきか、弱くなるべきか?
-
[解決済み] UITextViewのマージン/パディングをなくす方法
-
[解決済み] iOSシミュレータでスクリーンショットを撮る
-
[解決済み] iphoneアプリのベータテストはどのように行うのですか?
-
[解決済み] UILabelで複数行のテキストを表示する
-
[解決済み] iOSで現在のデバイスの言語を取得するには?
-
[解決済み] NSNotificationCenterのaddObserver in Swift
-
[解決済み] swiftで電子メールアドレスを検証する方法は?