2012-12-01 52 views
1

我想MPVolumeView的一個實例添加到我的導航控制器的底部欄(工具欄的複選框被選中) 我沒有得到我的代碼的任何錯誤,但是當我運行項目在我的設備上沒有顯示音量滑塊。在此先感謝您的任何建議,這裏是我的代碼:添加MPVolumeView至底部工具欄

@interface ViewController() 
{ 
AVPlayer *vPlayer; 
AVPlayerItem *playerItem; 
UISegmentedControl *segm; 
UIToolbar *toolbar; 
} 
@end 

@implementation ViewController 
@synthesize myViewVolume; 
@synthesize nowPlaying; 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
playerItem = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:@"http://vibesradio.org:8000 /listen.pls"]]; 
vPlayer = [[AVPlayer alloc] initWithPlayerItem:playerItem]; 
[playerItem addObserver:self forKeyPath:@"timedMetadata" options:NSKeyValueObservingOptionNew context:NULL]; 


//self.myViewVolume = [[MPVolumeView alloc] initWithFrame:CGRectMake(20, 330, 280, 50)]; 


self.myViewVolume = [[MPVolumeView alloc] initWithFrame: toolbar.bounds]; 
[self.myViewVolume sizeToFit]; 
[self.view addSubview:toolbar]; 
[toolbar addSubview:self.myViewVolume]; 

} 

回答

2

您不能將子視圖添加到工具欄。您必須添加一個UIBarButtonItem,其視圖是您要顯示的視圖。

UIBarButtonItem* b = [[UIBarButtonItem alloc] initWithCustomView: myVolumeView]; 
myToolbar.items = @[b]; 

這與MPVolumeView無關。 任意您想添加到工具欄或導航欄的任意視圖都是如此。

下面是實際的代碼,在導航界面我的設備上工作的視圖控制器:

MPVolumeView* vv = [[MPVolumeView alloc] initWithFrame: CGRectMake(0, 0, 150, 40)]; 
UIBarButtonItem* b = [[UIBarButtonItem alloc] initWithCustomView: vv]; 
self.toolbarItems = @[b]; 
self.navigationController.toolbarHidden = NO; 

還請注意,您必須在設備上測試;模擬器中沒有用於卷視圖的界面。 :(

+0

你好,我已經嘗試了下面的代碼,但音量視圖不會出現在我的設備上,這很奇怪 - 代碼似乎是正確的我已經聲明瞭UItoolbar - myToolbar.self.myViewVolume = [[MPVolumeView alloc ] initWithFrame:CGRectMake(0,0,45,33)]; UIBarButtonItem * b = [[UIBarButtonItem alloc] initWithCustomView:myViewVolume]; myToolbar.items = @ [b];' – EmilDo

+0

可能是因爲'myToolbar'爲零。您忘記將接口設置爲界面中的實際工具欄,或者對於導航界面中的某些內容,這是導航控制器的工具欄屬性。 – matt

+0

謝謝matt,我添加了插座。 – EmilDo