手動でロードされたビューコントローラーからボタンを押すとiOSがクラッシュする

WS

プログラムでxibからUIViewControllerをインスタンス化し、それを子VCとして既存のメインビューに追加してから、子VCのビュー(ボタンを含む)をメインビューに追加します。ボタン付きのビューは問題なく表示されますが、ボタンを押すと、「認識されないセレクター」というメッセージが表示されてアプリがクラッシュします。

UIViewControllerのカスタムサブクラスを作成してXIBを作成しました(ファイル-新規-Cocoa Touchクラス、UIViewControllerのサブクラスを選択し、XcodeにXIBファイルも生成するように依頼します)。次に、そのXIBにボタンを配置し、新しく作成されたUIViewControllerサブクラスに接続しました。XIBファイルの所有者は新しいクラスの名前に設定されます。

したがって、ButtonPushedアクションメッセージがカスタムUIVCに送信されず、代わりに汎用UIViewControllerに送信されるように見えます。これはButtonPushedメッセージを正しく理解していません。

ボタンが押されたときに送信されたアクションメッセージが実際にカスタムUIViewControllerに送信されることを確認するにはどうすればよいですか?

これは、メインビューのawakeFromNibメソッドのコードです(メインビューはMain.storyboardからのものです)。

UIViewController *vc2 = [[UIViewController alloc] initWithNibName:@"ButtonVC" bundle:nil];

vc2.view.frame = CGRectMake(90, 140, 50, 200); //dont obscure the main view completely.

[self addChildViewController:vc2];
[self.view addSubview:vc2.view];  //vc2.view has a button, which shows up fine

[vc2 didMoveToParentViewController:self];

ボタンだけでストーリーボードを作成し、それをプログラムでロードしてから、buttonViewControllerをインスタンス化し、それとそのビューを子VCとしてメインビューに追加することで、同等の機能を得ることができました。それは問題なく機能しますが、XIBだけでこれを達成できるはずだと私には思えます。

Maciek Czarnik

これを試して:

UIViewController *vc2 = [[ButtonVC alloc] initWithNibName:@"ButtonVC" bundle:nil];

また、View Controllerのxibのクラスが適切に設定されていることを確認してください(ここで私の答えを参照してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ナビゲーションコントローラーの戻るボタンが押されたときに、他のビューコントローラーに移動するにはどうすればよいですか?

分類Dev

tvOS-プッシュビューコントローラーの移行中にMENUボタンが押されたことをキャッチします

分類Dev

React-Native iOS-ボタンを押すだけでReact-Nativeビューから非React-Nativeビュー(ネイティブiOSビューコントローラー)に移動するにはどうすればよいですか?

分類Dev

提示されたビューコントローラのボタンアクションからビューコントローラをプッシュする方法

分類Dev

クライアントが戻るボタンを押してページにアクセスしたときに、キャッシュされたコピーではなく新しいコピーをロードするようにするにはどうすればよいですか?

分類Dev

コントローラーの1つでボタンが押されたときに、ページビューコントローラーのビューを変更する

分類Dev

ボタンから別のストーリーボードをロードすると、ストーリーボードがクラッシュする

分類Dev

オーバーロードされたコンストラクターをスタブしようとすると、NSubstituteがクラッシュします

分類Dev

Railsボタンをクリックすると、ビューからカスタムコントローラーアクションを呼び出します

分類Dev

ナビゲーションバーの組み込みの戻るボタンが押されたら、ルートビューコントローラーにポップします

分類Dev

1つのボタンアクションで2つの異なるビューコントローラーを押す-iOS

分類Dev

Iphone 5s iOS 8.1.2ビューコントローラーがXIBからマップを読み込んでいる、クラッシュする

分類Dev

Swiftの別のビューコントローラーからサブクラス化されたビューコントローラーを提示する

分類Dev

いずれかのビュー内のボタンを使用して、ナビゲーションコントローラーとそのすべてのビューコントローラースタックをUIPopupviewで閉じます

分類Dev

子コントローラーを追加または提示すると、ストーリーボードのMapviewで奇妙な状況がクラッシュする(サンプルコードが追加されました)

分類Dev

ポップアップビューコントローラー内のボタンを押してビューコントローラー(ポップアップ)を非表示にし、ビューコントローラーの外側の任意の場所にタッチするにはどうすればよいですか?

分類Dev

ボトムシートをサブビューとして現在のビューコントローラに追加する必要がありますか、それともサブビューが追加された状態でUIWindowをプッシュする必要がありますか?

分類Dev

TVOSは、ルートコントローラーからダッシュボードに戻るために2つのメニューボタンを押す必要があります

分類Dev

インターネットから画像プレビューをダウンロードするためのQNetworkAccessManagerがクラッシュする

分類Dev

ボタンがクリックされたコントローラーとアクションを取得するにはどうすればよいですか?

分類Dev

親ビューコントローラから再度プッシュすると、子ビューフレームが変更されます

分類Dev

チェックボックスがオンになっているときに、ビューからコントローラーにチェックボックス値を動的に渡すにはどうすればよいですか?

分類Dev

ビューコントローラiOSをポップするとキーボードが短時間表示される

分類Dev

ビューコントローラーをxibする方法ストーリーボードビューコントローラーをプッシュする

分類Dev

ビューコントローラをロードしますが、テーブルビューを2回タップするまで表示されません

分類Dev

ビューがロードされたときに検索コントローラーからフォーカスを削除する

分類Dev

ビューコントローラーがモーダルに表示されているか、ナビゲーションスタックにプッシュされているかを確認するにはどうすればよいですか?

分類Dev

提示されたビューコントローラーが閉じられたことを検出する

分類Dev

iOS11-カスタムビューコントローラーがロードされないための提案-クラッシュ

Related 関連記事

  1. 1

    ナビゲーションコントローラーの戻るボタンが押されたときに、他のビューコントローラーに移動するにはどうすればよいですか?

  2. 2

    tvOS-プッシュビューコントローラーの移行中にMENUボタンが押されたことをキャッチします

  3. 3

    React-Native iOS-ボタンを押すだけでReact-Nativeビューから非React-Nativeビュー(ネイティブiOSビューコントローラー)に移動するにはどうすればよいですか?

  4. 4

    提示されたビューコントローラのボタンアクションからビューコントローラをプッシュする方法

  5. 5

    クライアントが戻るボタンを押してページにアクセスしたときに、キャッシュされたコピーではなく新しいコピーをロードするようにするにはどうすればよいですか?

  6. 6

    コントローラーの1つでボタンが押されたときに、ページビューコントローラーのビューを変更する

  7. 7

    ボタンから別のストーリーボードをロードすると、ストーリーボードがクラッシュする

  8. 8

    オーバーロードされたコンストラクターをスタブしようとすると、NSubstituteがクラッシュします

  9. 9

    Railsボタンをクリックすると、ビューからカスタムコントローラーアクションを呼び出します

  10. 10

    ナビゲーションバーの組み込みの戻るボタンが押されたら、ルートビューコントローラーにポップします

  11. 11

    1つのボタンアクションで2つの異なるビューコントローラーを押す-iOS

  12. 12

    Iphone 5s iOS 8.1.2ビューコントローラーがXIBからマップを読み込んでいる、クラッシュする

  13. 13

    Swiftの別のビューコントローラーからサブクラス化されたビューコントローラーを提示する

  14. 14

    いずれかのビュー内のボタンを使用して、ナビゲーションコントローラーとそのすべてのビューコントローラースタックをUIPopupviewで閉じます

  15. 15

    子コントローラーを追加または提示すると、ストーリーボードのMapviewで奇妙な状況がクラッシュする(サンプルコードが追加されました)

  16. 16

    ポップアップビューコントローラー内のボタンを押してビューコントローラー(ポップアップ)を非表示にし、ビューコントローラーの外側の任意の場所にタッチするにはどうすればよいですか?

  17. 17

    ボトムシートをサブビューとして現在のビューコントローラに追加する必要がありますか、それともサブビューが追加された状態でUIWindowをプッシュする必要がありますか?

  18. 18

    TVOSは、ルートコントローラーからダッシュボードに戻るために2つのメニューボタンを押す必要があります

  19. 19

    インターネットから画像プレビューをダウンロードするためのQNetworkAccessManagerがクラッシュする

  20. 20

    ボタンがクリックされたコントローラーとアクションを取得するにはどうすればよいですか?

  21. 21

    親ビューコントローラから再度プッシュすると、子ビューフレームが変更されます

  22. 22

    チェックボックスがオンになっているときに、ビューからコントローラーにチェックボックス値を動的に渡すにはどうすればよいですか?

  23. 23

    ビューコントローラiOSをポップするとキーボードが短時間表示される

  24. 24

    ビューコントローラーをxibする方法ストーリーボードビューコントローラーをプッシュする

  25. 25

    ビューコントローラをロードしますが、テーブルビューを2回タップするまで表示されません

  26. 26

    ビューがロードされたときに検索コントローラーからフォーカスを削除する

  27. 27

    ビューコントローラーがモーダルに表示されているか、ナビゲーションスタックにプッシュされているかを確認するにはどうすればよいですか?

  28. 28

    提示されたビューコントローラーが閉じられたことを検出する

  29. 29

    iOS11-カスタムビューコントローラーがロードされないための提案-クラッシュ

ホットタグ

アーカイブ