viewdidload问题xcode 4.2

时间:2012-05-26 16:22:13

标签: objective-c xcode4 viewcontroller viewdidload viewwillappear

我只是学习如何使用push和pop更改视图之间的切换。 现在,在我的第二个视图中,我添加了一个标签巫婆,每当我的第二个视图被推动时,它就会改变她的价值。 我添加标签,将她连接到我的文件所有者,我使用viewdidload来改变她的价值。 当我进入我的第二个视图时,没有任何事情发生。但是当我使用viewdidapper时,所有工作都很完美(但是在标签值更新之前需要一秒钟)。

我的代码是: mysecondviewcontroller.h:

@interface SecondViewController : UIViewController
{
     IBOutlet UILabel *textLabel;
     NSString *label;
}

@property (copy) NSString *label;

@end

mysecondviewcontroller.m(ofcourse i synthesize label):

-(void)viewDidAppear:(BOOL)animated
 {
   textLabel.text = label;
   NSLog(@"viewdidapper2");
 }

 - (void)viewDidLoad
{
   textLabel.text = label;
   [super viewDidLoad];
    NSLog(@"viewdidload2");

// Do any additional setup after loading the view from its nib.
}

我的firstviewcontroller.m(IBAction):

- (IBAction)pushViewController:(id)sender
{
    static int count = 1;

    SecondViewController *secondVieController = [[SecondViewController alloc] init];
    [self.navigationController pushViewController:secondVieController animated:YES];   
   secondVieController.title = @"second";
   secondVieController.label = [NSString stringWithFormat:@"number: %d", count];     

   count++;

}

我的viewdidload中有什么问题?

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您正在使用viewDidLoad,则需要在执行任何其他操作之前调用超级函数。

- (void)viewDidLoad
{
   [super viewDidLoad];
   textLabel.text = label;
    NSLog(@"viewdidload2");

// Do any additional setup after loading the view from its nib.
}

我认为还有另一个问题,您在推送视图控制器后设置secondVieController.label,但这意味着在viewDidLoad运行时,secondVieController.label仍为空。这应该解决它。

- (IBAction)pushViewController:(id)sender
{
    static int count = 1;

    SecondViewController *secondVieController = [[SecondViewController alloc] init];
    secondVieController.title = @"second";
    secondVieController.label = [NSString stringWithFormat:@"number: %d", count];     
    [self.navigationController pushViewController:secondVieController animated:YES];   

    count++;

}

答案 1 :(得分:0)

如果您想在每次加载视图时更新标签,则必须将代码写入Viewwillappear方法。