UILabel不会通过模态演示视图控制器进行更新

时间:2014-04-30 20:56:11

标签: ios objective-c

我有两个类, PresentViewController ModalViewController ,在PresentViewController中我以这种格式调用ModalViewController:

ModalViewController *targetController = [[ModalViewController alloc] init];

targetController.modalPresentationStyle = UIModalPresentationFormSheet;

targetController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

[self presentViewController:targetController animated:YES completion:nil];

// it is important to do this after presentModalViewController:animated:
targetController.view.superview.bounds = CGRectMake(0, 0, 400, 218);

ModalViewController 中,我有一个按钮,它将参数发送到类 PresentViewController

-(IBAction)apply{

    PresentViewController *infoViewController = [[PresentViewController alloc] init];
    [infoViewController setDiscount:[campoDesconto.text intValue]];

        [self dismissViewControllerAnimated:YES completion:nil];

}

PresentViewController 中,方法 setDiscount 如下:

-(void)setDiscount:(int)value{

    NSLog(@"Method is called!");
    totalPrice.text = value;

}

正在调用此方法,因为我收到了控制台消息,但不幸的是,这个UILabel没有更新您的值,为什么会发生这种情况,我该如何解决?

2 个答案:

答案 0 :(得分:0)

因为 totalPrice 在调用setDiscount:之前可能无法实例化。加载视图后调用setDiscount:并实例化 totalPrice 以更新标签文本

答案 1 :(得分:0)

当您拨打apply方法时,您尚未设置view的{​​{1}}。 因此,您可能还没有创建infoViewController标签,如果您在totalPrice中执行NSLog(@"totalPrice: %@", totalPrice);,则可能会输出setDiscount:。您应该将折扣值保存为属性,并将其设置为(null)以及调用viewDidLoad方法时。

您还要将setDiscount:设置为int,这是不正确的。

<强> PresentViewController.h

NSString

<强> PresentViewController.m

@interface PresentViewController : UIViewController

@property (nonatomic, assign) int discount;

@end