我有两个类, 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没有更新您的值,为什么会发生这种情况,我该如何解决?
答案 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