2011-08-24 88 views
2

所以我一直在整個上午試圖找出如何從一個視圖控制器加載第二榫文件上取向的變化,但我沒有成功,這就是爲什麼我來這裏尋求幫助。問題是我想在設備旋轉時加載橫向筆尖文件。我有這個代碼到目前爲止它不起作用:如何有多個筆尖文件iphone一個視圖控制器

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    if (toInterfaceOrientation==UIInterfaceOrientationLandscapeRight || toInterfaceOrientation==UIInterfaceOrientationLandscapeLeft) { 
     [self initWithNibName:@"myNibFile" bundle:nil]; 
    } 
} 

新的筆尖沒有被加載。在界面生成器中,我將文件所有者設置爲此視圖控制器,因此它應該可以工作。我也試過用:[[NSBundle mainBundle] loadNibNamed:@"myNibFile" owner:self options:nil]; ,但我沒有運氣不是你能提​​供有關如何從initWithNibName或有用的鏈接加載筆尖文件的例子嗎?我似乎沒有在網上找到它。

非常感謝。

+0

一旦裝入新的筆尖,您現有視圖中設置的值(例如文本字段,按鈕狀態)將會丟失。我建議瞭解大小,定位和自動調整大小功能在界面生成器的尺寸檢查的功能 - 你可以通過設置這些正確有您的視圖上的旋轉自動調整它的佈局實現了不少。 – gamozzii

回答

0

對於這一點,你必須創建class.You的新的實例在運行時無法更改視圖控制器的筆尖。

你爲什麼要爲一個視圖控制器創建多個筆尖文件。只需在單個筆尖文件和用戶中創建多個視圖即可。

0

在運行時更改控制器的筆尖根本不是一個好主意(不知道是否有可能合法地)。它可能導致筆尖在內存中發生懸浮,最終導致內存泄漏。我遇到同樣的問題一段時間回來&發現,沒有使用IB &碎粒是最簡單的方法去(幸運的是我的觀點是不是很複雜)。解決方案是在代碼&中佈局子組件,以根據方向更改進行調整。我確實在我的UIViewController subclass-

-(void) adjustLayout:(UIInterfaceOrientation)orientation 
{ 
    if(UIInterfaceOrientationIsPortrait(orientation)) 
    { 
     mySubview1.frame = frameInAccordanceWithPortrait; 
    } 
    else 
    { 
     mySubview1.frame = frameInAccordanceWithPortrait; 
    } 
} 

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; 
    [self adjustLayout:toInterfaceOrientation]; 
} 

HTH即使你做到這一點,您的網點將全部在新的筆尖等任何可以重新連接到視圖組件下面,

阿克沙伊

相關問題