1

裏話

現在、Facebookメニューアプリの外観を処理/模倣するカスタムクラスを作成しています。この機能を別のプロジェクト(動作中)で作成し、コードを再利用可能にすることをお勧めします。

問題

「認識されないセレクターがインスタンスに送信されました」というエラーが発生しますが、メソッド「handle」を実装したことは確かですが、何が問題なのか理解できません。誰かが私を助けるのに十分親切なら。または私を正しい方向に押してください

編集

出力ウィンドウによって生成された完全なエラー

2013-03-06 19:56:39.520 SwipeMenuProject [14347:c07]-[__ NSArrayM handle:]:認識されないセレクターがインスタンス0x7558310に送信されました

コード

UISwipeMenuControl.m

#import "UISwipeMenuControl.h"

@implementation UISwipeMenuControl

@synthesize frontWindow = _frontWindow, backWindow = _backWindow, navController = _navController, btnHandle = _btnHandle;

-(id)init
{
    self.frontWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.backWindow = [[UIWindow alloc] initWithFrame:CGRectMake(-61,0,[[UIScreen mainScreen] bounds].size.width,[[UIScreen mainScreen] bounds].size.height)];

    self.btnHandle = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [self.btnHandle setFrame:CGRectMake(0, 0, 60, 20)];
    [self.btnHandle setTitle:@"Handle" forState:UIControlStateNormal];

    UIPanGestureRecognizer * dragGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handle:)];
    [self.btnHandle addGestureRecognizer:dragGesture];

    UIViewController * viewController = [[UIViewController alloc] initWithNibName:nil bundle:nil];
    [viewController setTitle:@"Swipe Menu"];
    [viewController.navigationItem setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:self.btnHandle]];

    self.navController = [[UINavigationController alloc] initWithRootViewController:viewController];
    [self.frontWindow setRootViewController:self.navController];

    return self;
}

-(UIWindow *)getFrontWindow
{
    return self.frontWindow;
}

-(UIWindow *)getBackWindow
{
    return self.backWindow;
}

-(UINavigationController *)getNavigationController
{
    return self.navController;
}

-(void) setRootViewController:(UIViewController *)viewController
{
    self.navController = [[UINavigationController alloc] initWithRootViewController:viewController];
    [viewController.navigationItem setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:self.btnHandle]];
    [self.frontWindow setRootViewController:self.navController];
}
-(void)handle:(id)sender
{
    //unrelated code here
}

Appdelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UISwipeMenuControl * swipeMenu = [[UISwipeMenuControl alloc] init];

    CustomViewController * cViewController = [[CustomViewController alloc] initWithNibName:nil bundle:nil];
    [swipeMenu setRootViewController:cViewController];

    self.window = [swipeMenu getFrontWindow];
    [self.window setBackgroundColor:[UIColor redColor]];
    [self.window makeKeyAndVisible];

    return YES;
}
4

1 に答える 1

2

これは所有権/メモリの問題のようです。UISwipeMenuControlレコグナイザーがアクションを送信すると、割り当てが解除されたようです。

それが問題であるかどうかを調査するためにゾンビを有効にします。

于 2013-03-06T19:26:27.827 に答える