2

XiBを使用してiOS4で開発されたアプリケーションがあります。iOS6.1以前で問題なく動作しました。ただし、一部のボタンについては、iPhone および iOS 7.0 の場合、IBAction が呼び出されません。また、iPad と iOS 7.0 でも問題なく動作しています。もちろん、iPhone と iPad で別の Xib を使用しています。これがコードです。それはかなり基本的です。しかし、それには入りません。

- (IBAction) didReceiveMapButtonPress {
   NSLog(@"IN DID RECEIVE MAP BUTTON PRESS");
   if ([self wasReferredFromMap]) {
    [[self navigationController] popViewControllerAnimated:YES];
   } else {
    [self pushMapViewController];
   }
  }
4

3 に答える 3

4

開発者の多くは、カスタム ビューを使用して、古いバージョンの iOS のテーブル ビューにカスタム セルを表示していました。あなたがその 1 人である場合、ボタン クリック アクションが iOS7 で機能しなくなるという問題に直面する必要があります。

これを解決する方法:

次の 3 つのオプションがあります。

オプション 1 : ビューを取得する代わりに、新しいテーブル セルを使用して新しいレイアウトを作成します。すべてのレイアウトをテーブルセルに再度配置します。

これには多くの労力が必要になることは承知しています。これをやりたくない場合は、非常に小さな裏技があります: オプション 2

オプション 2 : ボタンの IBOutlet を作成し、このボタンをセルのコンテンツ ビューのサブビューとして追加します。

[self.myCell.contentView addSubview:self.btn_click];

上記のコード行は、コンテンツ ビューのサブビューとして btn_click を追加します。これで、ボタン クリック アクションが機能するはずです。

オプション 3:

最良の方法 :

i) アウトレット UITableViewCell を取得します。ii) 既存のビューを新しいテーブル セルのサブビューとして作成します。iii) カスタム セルの既存のビューへの接続を切断し、それを新しい UITableViewCell に接続します。

以上で、IBAction が機能するようになります。

「クラスはキー値コーディングではありません - 準拠しています」というエラー メッセージでクラッシュした可能性があります。. 古いビュー接続を確認し、黄色のマークが付いているすべての接続を削除します。

于 2013-09-30T14:09:45.590 に答える