【问题标题】:UIBarButtonItem not toggling between Play and PauseUIBarButtonItem 不在播放和暂停之间切换
【发布时间】:2013-07-29 14:23:20
【问题描述】:

我编写了以下代码来在标识符播放和暂停之间切换按钮。按钮在暂停时必须是播放类型,在播放时必须是暂停类型。

- (IBAction)playSound:(id)sender {

    if (isPaused) {
        playOrPauseButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemPause target:self action:@selector(pausePlaying)];
//        playOrPauseButton.style = UIBarButtonSystemItemPause;
//        [playOrPauseButton setStyle:UIBarButtonSystemItemPause];
        isPaused = NO;
        NSLog(@"Playing");
    }

    else {

        playOrPauseButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(resumePlaying)];
//        playOrPauseButton.style = UIBarButtonSystemItemPlay;
//        [playOrPauseButton setStyle:UIBarButtonSystemItemPlay];
        isPaused = YES;
        NSLog(@"Paused");

    }

}

注释语句是我从网络上得到的不同选项,我一一尝试。这三个选项都不是在播放和暂停状态之间切换。我已将按钮标识符设置为情节提要中的播放。无论我做什么,按钮仍然是播放按钮。如何将按钮切换为播放/暂停类型?

【问题讨论】:

    标签: objective-c uibarbuttonitem


    【解决方案1】:

    只需像这样为您的方法编写代码:-

    -(IBAction)pausePlaying
    {
        NSLog(@"push tap");
        if(playing == YES)
        {
            playOrPauseButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemPause target:self action:@selector(resumePlaying)];
            self.navigationItem.rightBarButtonItem = playOrPauseButton;
            playing= NO;
        }
    }
    
    -(IBAction)resumePlaying
    {
        if(playing == NO)
        {  
            playOrPauseButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(pausePlaying)];
            self.navigationItem.rightBarButtonItem = playOrPauseButton;
            playing= YES;  
        }
    
        NSLog(@"resume tap");    
    }
    
    
    - (void)viewDidLoad
    {
        playing=YES; 
        playOrPauseButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(pausePlaying)];
        self.navigationItem.rightBarButtonItem = playOrPauseButton;
        [super ViewDidLoad:animated];
    }
    

    工作截图:-

    【讨论】:

      【解决方案2】:

      设置工具栏项的工作方式如下

      UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
      [self.navigationController.toolbar setBarStyle:UIBarStyleBlackOpaque];
      UIBarButtonItem *customItem = [[UIBarButtonItem alloc] initWithTitle:@"toolbar title" style:UIBarButtonItemStylePlain    target:self     action:@selector(onToolbarTapped:)];
      NSArray *toolbarItems = [NSArray arrayWithObjects:spaceItem, customItem, spaceItem, nil];
      
      [self setToolbarItems:toolbarItems animated:NO];
      

      制作一个 barbuttons 数组将其设置为工具栏项

      所以在你的情况下,不仅不修改还要在工具栏中设置它以使其正常工作

      【讨论】:

      • 抱歉,没听懂。我需要做的是将单个按钮切换为播放/暂停标识符,而不是添加两个不同的按钮来播放和暂停。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 2019-06-25
      相关资源
      最近更新 更多