2012-05-25 53 views
2

如果我有一個按鈕,我想用同一個控制器爲默認的「UI頁面幻燈片」設置動畫效果,那麼點擊「nextbutton」時會怎麼做呢?我認爲這會奏效,但事實並非如此。iOS:推動相同的視圖控制器

- (IBAction)NextButton:(id)sender 
{ 
    [self.navigationController pushViewController:self animated:YES]; 
    NSInteger CurrentQuestionNumber = [QuestionNumber intValue]; 
    NSInteger NewQuestionNumber = CurrentQuestionNumber + 1; 
    QuestionNumber = [NSString stringWithFormat:@"%d", NewQuestionNumber]; 
    QuestionNumberLabel.text = QuestionNumber; 
    QuestionLabel.text = [QuestionsList objectForKey:QuestionNumber]; 
} 
+1

究竟是什麼「不起作用」呢?會發生什麼,而不是你所期望的? –

+0

它只是通過quesitons plist循環......問題之間沒有動畫。 –

回答

7

而不是推自己,你需要實例化一個新類的實例,並推動它取代self。然後,您可以獲取相關數據並將其解析到-viewDidLoad方法的界面中。

SameClassAsSelf *new_self = [[SameClassAsSelf alloc] init...]; 
new_self.questionNumber = QuestionNumber; 
new_self.questionsList = QuestionsList; //if needed 
[self pushViewController:new_self animated:YES]; 
[new_self release]; 
+0

這是不好的做法? –

+0

爲每個問題創建一個新的UIViewController效率更高,但是,我建議只更改頁面上的標籤文本而不是實際推送新的視圖控制器。 –

+0

很高興知道。你能給我更多的信息嗎?我是Objective-C和iOS的新手 –

0

從文檔pushViewController:animated:

的viewController

被壓入堆棧的視圖控制器。這個 對象不能是標籤欄控制器的一個實例,並且它不能是 已經在導航堆棧上。

您繼續將self推入導航堆棧。由於它已經在堆棧中,所以導航控制器很可能會忽略推送,並且因爲您正在修改視圖中的標籤,所以看起來標籤正在更改而沒有任何動畫。 (因爲這正是發生了什麼事情)。

+0

那麼我該如何補救?只是製作標籤的動畫? –

+0

不允許在導航堆棧上推送相同的實例,但您可以創建同一個viewController的多個實例來推送單個navigationStack。 請仔細閱讀文檔。 –

相關問題