我使用以下代码从情节提要中实例化视图控制器:

CalloutViewController *calloutVC = (CalloutViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"CalloutViewController"];


并尝试为其分配其标题中在此处声明的属性nameLabel:

@interface CalloutViewController : UIViewController

@property (strong, nonatomic) IBOutlet UILabel *nameLabel;
...
@end


使用

calloutVC.nameLabel.text = @"test";


但是,分配后,该属性仍然为零。

最佳答案

这是因为IBOutlet尚未加载。您需要创建一个NSString属性并将其值分配给它。并在您的CalloutViewControllerviewDidLoad中将值分配给您的IBOutlet

喜欢:

@interface CalloutViewController : UIViewController

@property (nonatomic, weak) IBOutlet UILabel *nameLabel;
@property (nonatomic, copy) NSString *nameValue;
...
@end


在你的viewDidLoad

- (void)viewDidLoad
{
   [super viewDidLoad];
   self.nameLabel.text = self.nameValue;
   ...
}


并分配如下属性:

calloutVC.nameValue = @"test";

08-17 18:32