2011-05-16 17 views
3

我最初加入MPVolumeView動態上的網頁...如何通過Xcode設計器添加MPVolumeView?

#import "MediaPlayer/MPVolumeView.h" 
. 
. 
-(IBAction) handleVolumeButtonClicked:(id) sender { 
    if (volumeView == nil) { 
     volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(25, 378, 270, 30)]; 
     [self.view addSubview:volumeView]; 
     [volumeView release]; 
    } else { 
     [volumeView removeFromSuperview]; 
     volumeView = nil; 
    } 
} 

但由於某種原因,我開始應用程序時動態添加量組件崩潰的報告。

爲了解決這個問題,我決定嘗試通過XCode設計器添加組件到視圖中,但後來我意識到我不知道該怎麼做!

我首先從模板拖動一個'Object'到Object palette,但後來我發現我無法將它添加到視圖中。所以我放棄了這個想法,然後直接將'View'對象拖到.xib視圖中。

一旦添加了組件,我試圖將「自定義類」更改爲「MPVolumeView」,但視圖只是呈現了一個空矩形。在模擬器中運行代碼無法呈現任何內容。

有沒有人知道我缺少什麼步驟添加一個類到調色板中不存在的視圖?

回答

0

不知道你現在是否已經想通了。我剛剛成功創建了一個帶有音量滑塊的應用程序。這是我做了(從MPVolumeView):

  • 添加一個UIView和大小和位置,並根據需要進入的.xib視圖。
  • 改變了類以MPVolumeView
  • 添加以下到我的.h文件中:
#import 

@interface MyView : UIViewController { 
    MPVolumeView *_mpVolumeViewParentView; 
} 
@property (nonatomic, retain) IBOutlet MPVolumeView *mpVolumeViewParentView; 

@end
  • 添加以下到我的.m文件:
#import "MyView.h" 

@implementation MyView 

@synthesize mpVolumeViewParentView = _mpVolumeViewParentView; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [[self mpVolumeViewParentView] setBackgroundColor:[UIColor clearColor]]; 
    MPVolumeView *myVolumeView = [[MPVolumeView alloc] initWithFrame:[[self mpVolumeViewParentView] bounds]]; 
    [[self mpVolumeViewParentView] addSubview:myVolumeView]; 
    [myVolumeView release]; 
} 
- (void)dealloc { 
    [_mpVolumeViewParentView release]; 
    [super dealloc]; 
}

希望它有助於。

+6

您將以編程方式創建的MPVolumeView添加爲您在界面生成器中創建的現有MPVolumeView的子視圖?對不起,但這沒有任何意義。現在你有兩個嵌套的體積視圖,以編程方式創建一個覆蓋另一個。對不起,但這裏的其他答案都比這一個恕我直言,要好得多;這不是任何人應該這樣做的方式。 – Mecki 2014-11-24 13:37:42

+0

@RoLYroLLs我認爲現在是編輯答案的正確時機。 – Florik 2015-10-02 11:36:50

+0

@Florik謝謝!完成了! – RoLYroLLs 2015-10-02 20:17:06

5

您應該嘗試在iOS設備上運行您的應用程序,而不是模擬器。在模擬器上,MPVolumeView以白色文本顯示「No Volume Available」。如果視圖的背景顏色設置爲白色(在界面生成器中默認),則視圖看起來是空的。

21

添加通用UIView並將自定義類設置爲MPVolumeView確實有效。請確保執行以下操作:

  • 將MediaPlayer框架添加到您的項目中。如果沒有,MPVolumeView的加載將失敗(儘管消息記錄在控制檯上)。
  • 在實際設備上運行。模擬器不會顯示音量滑塊。
  • 仔細檢查您的視圖沒有從視圖中自動調整大小。
+5

模擬器不會顯示音量幻燈片!謝謝@Shane Arney! – 2013-10-07 10:33:52

4

即使要簡單得多:

添加查看和更改的類MPVolumeView並宣佈在.H

#import <MediaPlayer/MediaPlayer.h> 

@interface MyView : UIViewController { 
    MPVolumeView *_mpVolumeview; 
} 

在。m只是分配它。

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [MPVolumeView alloc]; 

    // set properties using the declared object in .h 
    // Example 
    [mpVolumeview setShowsVolumeSlider:NO]; 
}