2013-10-19 75 views
0

我不知道爲什麼我的NewViewController得到我的ViewController的動畫。我的NewViewController.xib中的所有內容都表現得很奇怪。例如,我的UITableView在動畫和其他對象中都很輕鬆。我檢查了我的NewViewController,它沒有與我的ViewController掛鉤。如果您對如何制止這一問題有任何建議,我將不勝感激。iOS:動畫影響我的其他ViewController出於某種奇怪的原因

ViewController.m

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
[self start]; 
    } 

-(void)start{ 
CGContextRef *imageContext = UIGraphicsGetCurrentContext(); 
[UIView beginAnimations:nil context:imageContext]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
[UIView setAnimationDelegate:self]; 
image.alpha = 1; 
image1.alpha = 1; 
[self performSelector:@selector(change) withObject:nil afterDelay:3]; 
    } 


-(void)change{ 
    NewViewController *newViewController = [[NewViewController alloc]init]; 
    [self.navigationController pushViewController:newViewController animated:NO]; 
    } 

回答

0

新視圖控制器被從視圖控制器在動畫過程中推壓。因此,獲得影響新控制器的結果並不奇怪。您需要將新的視圖控制器創建和演示移出動畫。

此外,我沒有看到您撥打[UIView commitAnimations]的位置以正確完成動畫塊。

此外,您在調用viewDidLoad中的界面動畫時,如果視圖可能還不可見,並且結果不可預知。相反,您應該在viewDidAppear中調用初始動畫。

+0

該commitAnimation似乎解決了一切。謝謝,沒有看到我遵循的教程中的方法。 –

0

只是爲了澄清,你的NewViewController如何涌現?

聽起來你有一個爲它設置的nib文件,但是隨後在你的代碼中用init調用它,而不是initWithNibNamed。

這聽起來好像你可能在你的navigationController的nib中包含了一個NewViewController的實例,雖然我不能確定你的語句是否屬於這種情況。總之,看起來您可能會使用2或3種不同的方法來創建NewViewController的實例,而您只需要執行一次。

我會走出一條腿,假設你想使用自定義設計的NewViewController.xib文件。如果是這樣,你會想這樣做:

  1. 確保您的導航控制器中沒有ViewController對象與NewViewController類。

  2. 在技術上,您不必爲您的NewViewController類添加屬性或實例變量,因爲導航控制器會在您推動時接管保留計數,但您很有可能希望擁有NewViewController範圍到您的類無論如何處理事件/重用等...

  3. 當你創建一個NewViewController的實例,從這樣的筆尖實例化它(注意我假定你已經聲明@property (強,非原子)NewViewController * nvc;)

-

nvc = [[NewViewController alloc] initWithNibNamed:@"nameOfNibGoesHereWithoutAppendingDotXib" bundle:[NSBundle mainBundle]]; 

現在,當newViewController加載時,您應該看到它的行爲與您在Nib中的佈局一樣。

我在這裏做了很多假設,隨時糾正並根據需要重新指導您的問題,我們將盡力幫助!

相關問題