Ios 如何了解uibarbuttonite选择器';姓名

Ios 如何了解uibarbuttonite选择器';姓名,ios,selector,uibarbuttonitem,Ios,Selector,Uibarbuttonitem,我正在为iOS开发一个基于SplitView的应用程序 我在主视图控制器上添加了一个隐藏此视图的按钮,我是这样做的 MasterViewController.m - (IBAction)hideMasterViewController:(id)sender { if (!app) { app = (AppDelegate *)[[UIApplication sharedApplication] delegate]; } if (!currentSplitVie

我正在为iOS开发一个基于SplitView的应用程序

我在主视图控制器上添加了一个隐藏此视图的按钮,我是这样做的

MasterViewController.m

- (IBAction)hideMasterViewController:(id)sender {
    
    
    if (!app) { app = (AppDelegate *)[[UIApplication sharedApplication] delegate]; }
    if (!currentSplitViewController) {
        currentSplitViewController  = (UISplitViewController *) app.window.rootViewController;
    }
    
    navController        = [currentSplitViewController.viewControllers lastObject];
    
    UIBarButtonItem *button = [[[[navController childViewControllers] objectAtIndex:0] navigationItem ] leftBarButtonItem];
    
    [button.target performSelector:button.action];
    
}
如您所见,我在我自己的按钮上添加了我的局部视图控制器的LeftBarButtonim的功能,然后我命令在这里执行它自己的选择器

[button.target performSelector:button.action];
但现在我得到了这个警告:

PerformSelector可能会导致泄漏,因为其选择器未知

我是这样做的,因为细节控制器已经预先构建好了,我不知道它是选择器的名字,怎么知道


编辑:这是我的两个屏幕:

DetailViewController(原装预建按钮)

MasterViewController(我从细节视图中的预构建按钮开发了我的按钮克隆)


编辑:感谢耶稣将我的答案:

- (IBAction)hideMasterViewController:(id)sender {
    
    
    if (!app) { app = (AppDelegate *)[[UIApplication sharedApplication] delegate]; }
    if (!currentSplitViewController) {
        currentSplitViewController  = (UISplitViewController *) app.window.rootViewController;
    }
    
    navController        = [currentSplitViewController.viewControllers lastObject];
    
    UIBarButtonItem *button = [[[[navController childViewControllers] objectAtIndex:0] navigationItem ] leftBarButtonItem];
    
    
    [button.target performSelector:@selector(toggleMasterVisible:)];
}

-(IBAction)toggleMasterVisible:(id)sender{
    
}
  • 我可以使用
    NSStringFromSelector(button.action)
  • 使用选择器的名称更改performSelector后,我收到了另一个警告,因为toggleMasterVisible:未声明(本地),所以我通过添加iAction将其关闭,但我从未设置到我的按钮
  • 使用以下命令:

    NSStringFromSelector(button.action)
    

    看起来您正在对主视图控制器中的代码隐藏主视图控制器。如果是这样的话,为什么需要来自细节控制器中按钮的选择器?为什么不让主视图控制器隐藏自己呢?我正在从主视图控制器隐藏主视图控制器本身,我画了一个按钮,我设置了细节视图控制器的隐藏动作,因为客户希望在menú上有一个按钮来隐藏它,我将上传一个屏幕截图——