2012-01-29 114 views
0

最近我开始使用故事板,我遇到了以下情况:我想从AppDelegate设置UILabel的文本。所以我创造了我的ViewController故事板问题

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" 
                  bundle: nil]; 

    ViewController *controller = (ViewController*)[mainStoryboard 
                 instantiateViewControllerWithIdentifier: @"mainViewController"]; 

    myViewController = controller; 

    [window addSubview:myViewController.view]; 
    [window makeKeyAndVisible]; 

的实例,并称之为从委托

- (void) updateParameterLabel:(NSString *)parameter { 

    NSLog(@"URL-2: %@", parameter); 

    parameterLabel.text = parameter; 
} 

以下方法,但参数未在UI中显示。

再想一想,这是一种strage的:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    NSLog(@"View did Appear"); 
} 

“视图并显示” 登录两次......

任何提示?

问候, 萨沙

回答

0

如果你仍想使它工作,使UILabelviewcontroller的属性和使用

在代理设置标签:

- (void) updateParameterLabel:(NSString *)parameter { 

    NSLog(@"URL-2: %@", parameter); 
    [myViewController updateParemeter:parameter]; 
} 

在myViewController:

- (void) updateParameterLabel:(NSString *)parameter { 

    NSLog(@"URL-2: %@", parameter); 

    parameterLabel.text = parameter; 
    [self.view setNeedsDisplay];//edit 
} 

因此请使用viewController更新您的标签。当然你需要标签作为你的viewController

+0

好的,这就是我实际上实现它的方式,但它仍然不起作用。 – 2012-01-30 07:59:42

2

从您的应用程序委托设置一个UILabel的文字是不是伟大的设计。你的视图控制器应该管理你的视图的内容,因此它们的名字。通常情况下,您的故事板会自动实例化,假设您正在使用Apple的默认模板,则不需要任何storyboardWithName等代码。

也许会考虑重新设计应用程序以更严格地遵循'model-view-controller'模式,并且还要看Apple如何自动实例化故事板(只需在XCode中创建一个新故事板项目即可看到此内容)。

+0

嗨,我想,我的描述有点不清楚,当然我使用了一个ViewController。问题是我覆盖 - (BOOL)应用程序:(UIApplication *)应用程序handleOpenURL:(NSURL *)url,我想从视图控制器调用updateParameterLabel方法来更新标签。 – 2012-01-30 07:57:07

0

对于我看到你试图更新标签之前它出现,所以你为什么不尝试在viewWillAppear调用updateLabel方法,这将是东西像这样

-(void)viewWillAppear:(BOOL)animated{ 
[self updateParameterLabel:@"Some Text"]; 
[super viewWillAppear:YES]; 
} 

并且updateParameterLabel必须在viewController中实现。