0

我是 Xcode 和 iOS 开发的新手,我正在尝试构建一个播放少量mp3文件的应用程序。选择a 中的一行时播放相应的文件tableview。我用PlayButtonIcon 创建了一个播放按钮(自定义按钮)。我在这里要做的是:

  1. 当我选择一行时,歌曲播放,然后图像应该从播放变为暂停
  2. 到目前为止,我已经能够对播放按钮进行编程,这样如果歌曲正在播放,按钮图像就会切换到暂停/播放。

我需要帮助的是:

  1. 如何从didSelectRowAtIndexPath
  2. 如何将图像更改为不同的图像。

任何帮助都会有很大帮助。

4

3 回答 3

3

回答你的部分

1)为您的自定义按钮分配一个标签,比如说“10”

现在在你的 didSelectRowAtIndexPath 上尝试这样的事情

UITableViewCell *cell =  [tableView cellForRowAtIndexPath:indexPath];
UIButton *playBtn = (UIButton*)[cell viewWithTag:10];   //This way you can acess your custom button

2)分配/更改图像很简单,这里是如何

    [playbtn setImage:[UIImage imageNamed:@"name of your image"] forState:UIControlStateNormal];
于 2013-07-01T18:14:08.100 回答
0

引用任何静态(不在单元格上)视图(例如 UIButton)的标准(且简单)是启用 XCode 中的助手编辑器,然后按住 CTRL 键将项目从 Interface Builder 拖到 .h 文件的接口部分。

这将为项目创建一个IBOutlet属性。XCode 将提示您命名该属性。

如果你命名IBOutlet“playButton”,那么你就像self.playButton从同一个视图控制器中一样引用它。

于 2013-07-02T12:31:50.533 回答
0

我建议创建一个自定义单元格,以便每个单元格都可以自己管理它的项目。一个简单的类,它继承自UITableViewCell并保存歌曲的实体、theUIButton和一些方法。也许也是play/pause stateBOOL的值。

// CustomCell.h
@interface CustomCell : UITableViewCell
{
    IBOutlet UIButton *playButton;
    id songEntity;
    BOOL isPlaying;
}

-(void)playSong;
-(void)pauseSong;

@end


// CustomCell.m
#import "CustomCell.h"

@implementation CustomCell

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{
    if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) 
    {
        isPlaying = NO;
        // init button...
        UIImage *img = [UIImage imageNamed:@"playButton.png"];
        [playButton setBackgroundImage:img forState:UIControlStateNormal];
    }
    return self;
}

-(void)playSong
{
    // ...
    UIImage *img = [UIImage imageNamed:@"pauseButton.png"];
    [playButton setBackgroundImage:img forState:UIControlStateNormal];
}

-(void)pauseSong
{
    // ...
    UIImage *img = [UIImage imageNamed:@"playButton.png"];
    [playButton setBackgroundImage:img forState:UIControlStateNormal];
}

//...
@end
于 2013-07-01T18:09:20.463 回答