iOS:推送相同的视图控制器

时间:2012-05-25 23:33:22

标签: iphone ios xcode uiview

如果我有一个按钮,并且我想使用相同的控制器为默认的“UI页面幻灯片”设置动画,那么当点击“nextbutton”时,我该如何实现?我认为这会奏效,但事实并非如此。

- (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];
}

2 个答案:

答案 0 :(得分:7)

您需要实例化同一个类的新实例,而不是推送self,而是将其推送到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];

答案 1 :(得分:0)

来自pushViewController:animated:的文档:

  

的viewController

     

推入堆栈的视图控制器。这个   对象不能是标签栏控制器的实例,它不能   已经在导航堆栈上。

您继续将self推送到导航堆栈。由于它已经在堆栈中,导航控制器可能忽略了推送,并且因为您正在修改视图中的标签,所以看起来标签正在改变而没有任何动画。 (因为这正是发生的事情。)