从表视图中选择一行后如何更改按钮图像 - iOS

时间:2013-07-01 17:55:44

标签: ios xcode image button tableview

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

  1. 当我选择一行时,播放该歌曲,然后图像应从播放更改为暂停
  2. 到目前为止,我已经能够对“播放”按钮进行编程,以便在播放歌曲时按钮图像切换为“暂停/播放”。
  3. 我需要帮助的是:

    1. 如何从didSelectRowAtIndexPath
    2. 访问自定义按钮
    3. 如何将图像更改为其他图像。
    4. 任何帮助都会非常有帮助。

3 个答案:

答案 0 :(得分: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];

答案 1 :(得分:0)

我建议创建一个自定义单元格,以便每个单元格可以自己管理它的项目。一个简单的类,它继承自UITableViewCell并保存歌曲的实体,UIButton和一些方法。对于播放/暂停状态,也可能是BOOL值。

// 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

答案 2 :(得分:0)

引用任何静态(不是单元格)视图(如UIButton)的标准(和简单)是在XCode中启用Assistant Editor并按CTRL将项目拖到Interface Builder的.h文件的接口部分

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

如果您将IBOutlet命名为“playButton”,则可以从同一个视图控制器中引用self.playButton