2012-06-12 53 views
0

IBAction什麼都不做。記錄「返回」到控制檯,以便連接正常。 self.topView也什麼都不做,當IBAction爲被稱爲爲什麼不是這個子視圖被刪除?

-(IBAction)loadSettingsView:(id)sender; 

{ 

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     [[NSBundle mainBundle] loadNibNamed:@"settingsView_iphone" owner:self options:nil]; 
    } else { 
     [[NSBundle mainBundle] loadNibNamed:@"settingsView_ipad" owner:self options:nil]; 
    } 
    [self.view addSubview:topView]; 
} 

-(IBAction)loadMainView:(id)sender; 
{ 
    [topView removeFromSuperview]; 
    NSLog(@"back"); 

} 
+0

你的問題是什麼? –

+0

什麼是'topView',它是如何分配的? –

+0

...哪個IBAction什麼都不做? – Daniel

回答

3

我希望我不會讓太多的假設在這裏,但是這應該解決您的問題。我假定topView是當前類的成員:

-(IBAction)loadSettingsView:(id)sender; 

{ 

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     topView = [[[NSBundle mainBundle] loadNibNamed:@"settingsView_iphone" owner:self options:nil] objectAtIndex:0]; 
    } else { 
     topView = [[[NSBundle mainBundle] loadNibNamed:@"settingsView_ipad" owner:self options:nil] objectAtIndex:0]; 
    } 
    [self.view addSubview:topView]; 
} 

-(IBAction)loadMainView:(id)sender; 
{ 
    [topView removeFromSuperview]; 
    NSLog(@"back"); 

} 

基本上,loadNibNamed方法使用的是在返回與所述筆尖所有的頂層視圖的陣列。如果你想引用這些視圖(在這裏我假設在筆尖有一個視圖),你需要實際分配你的topView變量。目前topView可能爲零,所以你的removeFromSuperview電話無所事事。

+1

...這似乎是一個可怕的方式來分配topView。我建議使用IBOutlet .... – Daniel

+0

這很有道理。那麼我怎麼會讓topView不是零? – frankie

0

資金更簡單的解決方案。只需在主視圖的筆尖上創建一個新視圖並在其上附加一個IBOutlet。像夢一樣工作。

​​
相關問題