【发布时间】:2015-09-16 02:11:12
【问题描述】:
我在界面生成器中有一个 UILabel,我已连接到一个属性,但它通过该视图控制器上的 viewDidLoad 保持为零。我一直在逐步完成,一旦 DetailViewController 被初始化,label 属性就在那里,但它是 nil 并且它似乎从未被初始化。
在我从使用 segues 切换到在导航控制器上执行 pushViewController 之前,它一直有效。
// DetailsViewController.h
#import <UIKit/UIKit.h>
#import "TLitem.h"
@interface DetailsViewController : UIViewController
@property (nonatomic, strong) TLitem *entry;
@property (weak, nonatomic) IBOutlet UILabel *entryLabel;
@end
然后在另一个视图控制器的表视图中:
// EntryListViewController.m
DetailsViewController *details = [[DetailsViewController alloc] init];
[details setEntry:entry];
[self.navigationController pushViewController:details animated:YES];
在viewDidLoad中:
// DetailsViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
[self.view setBackgroundColor:[UIColor yellowColor]];
TLitem *entry = [self entry];
UILabel *label = [self entryLabel];
label.text = [entry valueForKey:@"text"];
【问题讨论】:
-
您提到您从 segues 更改为以编程方式推送您的视图控制器。向我们展示您实例化它的代码。
-
如果您的视图控制器的视图和相关标签在情节提要中定义,您应该从
UIStoryboard实例中对其进行实例化。 -
实例化视图控制器?这是上面 NewEntryListViewController.m 中的第一行。
-
抱歉,错过了。但正如我所想,Jeffrey Thomas 下面的答案应该可以解决您的问题。
标签: ios objective-c uilabel