我只是学习如何使用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中有什么问题?
谢谢!
答案 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方法。