2013-11-26 100 views
0

我試圖創造出像一個底欄自定義視圖和它的工作IOS添加子視圖編程

現在需要在多個類此功能,所以我儘量寫它到一個新的類,並導入其喜歡的:

//BottomBarLauncher.h 
#import <UIKit/UIKit.h> 

@interface bottomBarLauncher : UIViewController 
-(void)launchBottomBar; 
@end 

並執行它爲:

//BottomBarLauncher.m 
-(void) launchBottomBar{ 
    for (UIView *subView in [topView subviews]) { 
     [subView removeFromSuperview]; 
    } 
    UIView *btnBarView = [[UIView alloc]initWithFrame:CGRectMake(0,  self.view.frame.size.height - 53.3, 320, 53.3)]; 
    btnBarView.backgroundColor = [UIColor redColor]; 
    [self.view addSubview:btnBarView]; 
} 

現在,這裏的問題,而我嘗試實現它的一個新的觀點類似如下:

//NewView.m 
#import "BottomBarProtocol.h" 

@interface NewView() 
{ 
    BottomBarLauncher *btnBar; 
} 
@end 
//blahblahblah 

[btnBar launchBottomBar]; 

,並沒有任何反應,我認爲這個問題是與

[self.view addSubview:btnBarView]; 

,但我不知道如何選擇當前視圖的目標,我可以添加子視圖上。

+0

NewView是否將BottomBarLauncher的視圖作爲其子視圖? –

回答

0

首先有一個建議,看你的需求/代碼我想你想創建自定義視圖。要創建自定義視圖,請創建一個繼承自UIView的類,而不是創建一個UIViewController

現在移動的代碼,你btnBarUIViewController有自己的看法self.view所以,當你調用這個[btnBar launchBottomBar]內部要添加上self.view底欄那是你btnBar控制器視圖,而不是NewView控制器view。希望你明白我指出的。

在這裏,你錯過了幾個電話,

btnBar.view.frame = CGRectMake(0,self.view.bounds.size.height-40,self.view.bounds.size.width,40); // Add suitable frame. 

//This call will add the btnBar's view as subview onto your current view controller's view. 
[self.view addSubView:btnBar.view]; 

這是不正確的/推薦的方式,你可以面對關於內存泄漏的嚴重挑戰。爲了避免這些錯誤,正如我所建議的那樣,改爲創建一個自定義的UIView。看看如何創建自定義視圖。

希望有幫助!

+0

您的意思是,我應該嘗試將BottomBarLauncher的整個類轉換爲UIView,並將其作爲子視圖添加到NewView類中? – mithrilsword

+0

是的,你是否需要創建一個'UIViewController'? – Amar

+0

我認爲UIView是我所需要的,新方法完美地工作,相反我必須在每次啓動之前畫出框架。 – mithrilsword

0

您可以返回UIView形式launchBottomBar方法和當前的ViewController類添加爲subView

0

使定製類和委託,並添加窗口中查看和設置它的框架,以便它是不可見的,並設置其在需要時從底部滑動並滑動,以便您可以在所有視圖控制器中使用它。
謝謝。

相關問題