2013-07-01 59 views
0

我是新來的Xcode和iOS開發,並試圖建立一個應用程序,播放幾個mp3文件。當選中tableview中的行時播放相應的文件。我用PlayButton圖標創建了一個播放按鈕(自定義按鈕)。我想在這裏做的是:如何從表視圖中選擇一行後更改按鈕圖像 - iOS

  1. 當我選擇一排,樂曲的播放,然後將圖像應該從播放切換到暫停
  2. 到目前爲止,我已經能夠節目的播放按鈕,使得如果歌曲正在播放,則按鈕圖像切換爲暫停/播放。

我需要幫助的是:

  1. 如何從didSelectRowAtIndexPath
  2. 訪問自定義按鈕,如何將圖像切換到不同的圖像。

任何幫助將大有裨益。

+0

你是否試圖訪問內置於標準'UITableViewCell'中的'UIImageView'? –

+0

我創建的按鈕位於表格視圖之外。這是我爲我的應用創建的一個工具欄,它具有播放/下一個/上一個按鈕。 (類似於任何音樂應用程序)。 – user2539989

+0

這個信息並不重要,因爲它聽起來像按鈕在單元格中^^所以我的答案在這裏沒用:P – geo

回答

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 
+0

好的。非常感謝你。我會嘗試這兩種解決方案。感謝你的幫助。到目前爲止,這一直是我構建應用程序時最困難的邏輯部分。:) – user2539989

+0

這是我試過,它的工作原理: UIButton * playBtn =(UIButton *)[self.view viewWithTag:10]; [playBtn setImage:[UIImage imageNamed:@「PauseButton.png」] forState:UIControlStateNormal]; – user2539989

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]; 
+0

這是我嘗試和工作: – user2539989

+2

:)如果它工作,然後標記它是正確的 –

0

引用任何靜態(不在單元格)視圖(例如UIButton)的標準(並且很簡單)是啓用XCode中的助理編輯器並按CTRL-將該項目拖動到來自Interface Builder的.h文件的界面部分。

這會爲該料品創建一個IBOutlet屬性。 XCode會提示你命名該屬性。

如果您將IBOutlet命名爲「playButton」,那麼您可以在同一個視圖控制器中引用它,如self.playButton