Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIToolbarButton上的TapGestureRecognitor不';行不通_Ios_Uitapgesturerecognizer_Uitoolbaritem - Fatal编程技术网

Ios UIToolbarButton上的TapGestureRecognitor不';行不通

Ios UIToolbarButton上的TapGestureRecognitor不';行不通,ios,uitapgesturerecognizer,uitoolbaritem,Ios,Uitapgesturerecognizer,Uitoolbaritem,我有一个UIToolbarButton,它有一个UIButton来保存图像。现在,当我单击此UIToolbarButton时,我想在当前视图中打开另一个视图 我的代码: - (IBAction)btnNowPlaying:(id)sender { UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self

我有一个UIToolbarButton,它有一个UIButton来保存图像。现在,当我单击此UIToolbarButton时,我想在当前视图中打开另一个视图

我的代码:

- (IBAction)btnNowPlaying:(id)sender
{
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                                   initWithTarget:self
                                   action:@selector(openPlaying:)];
    [self.view addGestureRecognizer:tap];
}

- (void)openPlaying:(UIGestureRecognizer *)sender
{
    NewMainViewController *vc  = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"Center"];
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController * npvc = [storyboard instantiateViewControllerWithIdentifier:@"NowPlayingVC"];
    [vc.containerView addSubview:npvc.view];
}

此操作,btnNowPlaying在UIButton上。

首先,您可以将默认的
UIBarButton
项与
自定义的
样式和setter图像属性一起使用,而不是创建
UIButton

您不需要创建额外的手势识别器。若您在Interface Builder中有connect IBAction with按钮,则可以将转换代码放入btnNowPlaying方法中


另一种方法是创建IBOutlet,将其与按钮连接,然后在
-(void)viewDidLoad
方法中创建UIgestureRecognitor

听起来您只是想从一个视图控制器导航到另一个视图控制器。只需控制从工具栏按钮项到要在情节提要中导航到的视图控制器的拖动。然后,单击两个视图控制器之间的分段,并在属性检查器中设置其标识符。之后,您只需实现
prepareforsgue:

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"THE_IDENTIFIER_YOU_ENTERED_IN_THE_ATTRIBUTES_INSPECTOR"]) {
        if ([segue.destinationViewController isKindOfClass:[NEWViewController class]]) {
            NEWViewController *vc = (NEWViewController *)segue.destinationViewController;
            // Any preparation you need to do for next view controller
            vc.someProperty = someValue;
        }
    }
}
在当前视图控制器中打开新的视图控制器有点奇怪。为什么不继续呢


另一个选项是允许初始化UIView,而不是视图控制器,只需
添加子视图:

为什么不使用UIBarButton项的image属性,而不是将UIButton放在bar按钮内?如果我只使用image属性,则不会显示图像,而只显示色调颜色?它对我有用。确保图像大小正确。图像大小为87X82像素-(void)viewDidLoad{[super viewDidLoad];UIImage i=[UIImage imageNamed:@“1.png”];CGSize destinationSize=CGSizeMake(25,25);UIGraphicsBeginImageContext(destinationSize);[i drawInRect:CGRectMake(0,0,destinationSize.width,destinationSize.height)];UIImage newImage=UIGraphicsGetImageFromCurrentImageContext();UIGraphicsSendImageContext();btnNewImage.image=newImage;//btnNewImage.tintColor=[UIColor clearColor];}您不需要这些技巧来为按钮提供图像。您可以从IB中设置它们:然后确保您已将操作连接到插座:当您按下按钮时是否调用了方法btnNowPlaying?如果没有,则更详细的答案是如何将IBAction连接到按钮: