2013-08-27 129 views
0

我嘗試在一個視圖中的其他顯示,但它不工作如何將視圖添加到子視圖?

我的看法

一般

@interface BaseViewController : UIViewController<UIPopoverControllerDelegate, DatePickerDelegate, AddScriptPopoverViewDelegate> 

第二

@interface MyViewController : BaseViewController<UniversalViewNavigationDelegate, StarsSizeViewDelegate, SelectPopoverViewDelegate, MyTableViewDelegate> 
@interface MyViewNavigationController : UIViewController<UITabBarDelegate, UISearchBarDelegate, MyTableViewDelegate> 

在需要表現出我的第二第三種觀點,但是當我嘗試在第二,在viewDidLoad中

MyViewNavigationController *tableVC = [[MyViewNavigationController alloc] initWithTableSize:CGSizeMake(380, 600)]; 
tableVC.delegate = self; 
[self.view addSubview:tableVC]; 

最後一行saing我:

Incompatible pointer types sending 'MyViewNavigationController *__strong' to parameter of type 'UIView *' 

和粉碎

幫助我請:)

+0

你可能不希望聽到這一點,但如果你將要展示來自其他控制器作爲子視圖的觀點,你真的應該使用兒童視圖控制器。搜索「容器視圖控制器」。 – Abizern

回答

1

變化

[self.view addSubview:tableVC]; 

[self.view addSubview:tableVC.view]; 
+1

那麼如何保持對視圖控制器的強大參考?這當然會影響它包含的視圖的生命週期? – trojanfoe

+0

對。無論如何,我會將VC存儲爲強大的財產。 – Chris

1

你只能添加從UIView繼承的類型UIView或佈局的佈局,所以改變下面給出的代碼。

MyViewNavigationController *tableVC = [[MyViewNavigationController alloc] initWithTableSize:CGSizeMake(380, 600)]; 
tableVC.delegate = self; 
[self.view addSubview:tableVC.view]; 
+1

那麼如何保持對視圖控制器的強烈參考?這當然會影響它包含的視圖的生命週期? – trojanfoe

1

你需要做這樣的財產.H文件

@property (strong, nonatomic)MyViewNavigationController *tableVC; 

,然後做在.M文件

tableVC = [[MyViewNavigationController alloc] initWithTableSize:CGSizeMake(380, 600)]; 
tableVC.delegate = self; 
[self.view addSubview:tableVC.view]; 
相關問題