iOS:推送相同的视图控制器
如果我有一个button,我想要使用相同的控制器animation默认的“UI页面幻灯片”,当点击“下一个button”时会怎么做呢? 我认为这会工作,但事实并非如此。
- (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]; }
而不是推自己,你需要实例化一个新的同一类的实例,并推动,以取代self
。 然后,您可以获取相关数据,并将其parsing到-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];
从pushViewController:animated:
的文档pushViewController:animated:
::
的viewController
被推入堆栈的视图控制器。 该对象不能是标签栏控制器的一个实例,它不能在导航堆栈上。
你不断推self
的导航堆栈。 由于它已经在堆栈中,导航控制器很可能会忽略推送,并且因为您正在修改视图中的标签,所以看上去标签正在更改,而没有任何animation。 (因为这正是发生的事情)