7050


[iOSでのカスタムダイアログの表示](https://ja.stackoverflow.com/questions/7007/ios%E3%81%A7%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E3%81%AE%E8%A1%A8%E7%A4%BA)

上記のベストアンサーの方法でダイアログを表示させることはできたのですが、作成した`xib`のボタンをコードと紐付けて実行し、ボタンをタップするとアプリが動かなくなってしまいました。エラーは何も出ていません。この場合何が原因となっているのでしょうか？すみません、どなたか分かる方がいればご教授いただきたいです。よろしくお願いします。

postDialog.h

[code]

    @interface PostDialog : UIView
    
    +(id)loadFromNib;
    
    - (IBAction)post:(id)sender;
    - (IBAction)cancel:(id)sender;
    
    @end
    
[/code]

postDialog.m

[code]

    @interface PostDialog ()
    
    @end
    
    @implementation PostDialog
    
    +(id)loadFromNib {
        return [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:nil options:nil] firstObject];
    }
    
    - (IBAction)post:(id)sender {
        NSLog(@"post");
    }
    
    - (IBAction)cancel:(id)sender {
        NSLog(@"cancel");
    }
    
    @end
    
[/code]

------追記------

コンソールにログを出力しました。

[code]

    * thread #1: tid = 0x3b6f, 0x0000000198c23bdc libobjc.A.dylib`objc_msgSend + 28, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x10)
        frame #0: 0x0000000198c23bdc libobjc.A.dylib`objc_msgSend + 28
        frame #1: 0x000000018cca9418 UIKit`-[UIApplication sendAction:to:from:forEvent:] + 96
        frame #2: 0x000000018cc9252c UIKit`-[UIControl _sendActionsForEvents:withEvent:] + 612
        frame #3: 0x000000018cca8db4 UIKit`-[UIControl touchesEnded:withEvent:] + 592
        frame #4: 0x000000018cca8a40 UIKit`-[UIWindow _sendTouchesForEvent:] + 700
        frame #5: 0x000000018cca1f94 UIKit`-[UIWindow sendEvent:] + 684
        frame #6: 0x000000018cc7568c UIKit`-[UIApplication sendEvent:] + 264
        frame #7: 0x000000018cf1460c UIKit`_UIApplicationHandleEventFromQueueEvent + 14992
        frame #8: 0x000000018cc73bf4 UIKit`_UIApplicationHandleEventQueue + 1616
        frame #9: 0x000000018847e9ec CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
        frame #10: 0x000000018847dc90 CoreFoundation`__CFRunLoopDoSources0 + 264
        frame #11: 0x000000018847bd40 CoreFoundation`__CFRunLoopRun + 712
        frame #12: 0x00000001883a90a4 CoreFoundation`CFRunLoopRunSpecific + 396
        frame #13: 0x00000001915435a4 GraphicsServices`GSEventRunModal + 168
        frame #14: 0x000000018ccdaaa4 UIKit`UIApplicationMain + 1488
      * frame #15: 0x0000000100032db0 PostDialog`main(argc=1, argv=0x000000016fdd3a60) + 116 at main.m:14
        frame #16: 0x000000019927ea08 libdyld.dylib`start + 4
    
[/code]


CC BY-SA 3.0
2015-02-25T01:20:03.103
7049
2015-02-25T03:42:58.840
2017-04-13T12:52:39.113
-1
5210
question
objective-c xib
xibで作ったカスタムダイアログとイベントハンドラを紐付ける


`xib`ファイルを選択した状態で、Xcodeの **コネクションインスペクタ** を選択してみてください（一番右のインスペクタです）。

一度作成したが名前を変えた（あるいは削除した）等で存在しなくなった  
`IBAction`が紐付いていないでしょうか？

----- 追記 -----  
**Sent Events** というのがありませんか？  
添付画像の例だと Closeボタンに IBActionが2つ紐付いていますが、.m
に`touchtouch`というメソッドが実装されていません（これでボタンを押下すると main で `Thread1:signal
SIGABRT`になります）。

ちなみに

> maniの「return UIApplicationMain(argc, argv, nil,  
>  NSStringFromClass([AppDelegate class]));」に緑線で「Thread 1:  
>  EXC_BAD_ACCESS(code=1, address=0x01)」というメッセージが出ています。

これはアプリがクラッシュして止まっている状態なので、エラーは出ていますね。

![画像の説明をここに入力](https://i.stack.imgur.com/AEzQy.png)


CC BY-SA 3.0
2015-02-25T02:12:15.653
7050
2015-02-25T02:35:06.193
2015-02-25T02:35:06.193
3516
3516
7049
answer


エラーの時に少しでもログを多く出す方法を記載します。  
AppDelegate.mに下記のメソッドを追加してください。

[code]

    void uncaughtExceptionHandler(NSException *exception) {
        NSLog(@"CRASH: %@", exception);
        NSLog(@"Stack Trace: %@", [exception callStackSymbols]);
    }
    
[/code]

次にAppDelegate.mの下記メソッド内に一行コードを追加してください。

[code]

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {   
        NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler); // <-これを追加
        // その他色々な処理
    }
    
[/code]

これでエラー時にログが **出る場合があります。**  
ログが出た場合は追記して頂くと原因究明のヒントになるかもしれません。


CC BY-SA 3.0
2015-02-25T03:42:58.840
7055
2015-02-25T03:42:58.840
7364
7049
answer