我有这个结构:
Items.h:
@interface Items : NSObject
@property (nonatomic, strong) NSString *tipTextField;
MainTableViewController.m
#import "Items.h"
{
NSArray *categoryArray;
NSArray *tipsArray; }
// Initialize the category array
Items *category1 = [Items new];
category1.categoryName = @"Category1";
category1.categoryImage = @"image.png";
category1.tipTextField = tipsArray [0];
Items *tip1 = [Items new];
tip1.tipTextField = @"Hello world!";
//Create tips array
tipsArray = [NSArray arrayWithObjects: tip1, tip2, ... nil];
但是如果我想在CategoryDetailViewController中显示字段" tipTextField"我收到一个空白的屏幕。
换句话说,我想要" category1.tipTextField"显示存储在" tip1.tipTextField = @" Hello world!";"但我收到一个空白文本字段。
有任何帮助吗?提前谢谢!
编辑1 :感谢两者,但在更改数组顺序后,我的应用程序在超级viewDidLoad崩溃:
CategoryDetailsViewController.h
#import "Items.h"
@property (weak, nonatomic) IBOutlet UITextView *tipTextField;
@property (nonatomic, strong) Items *item;
CategoryDetailsViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.tipTextField.text = self.item.tipTextField;
}
编辑2:崩溃是由于[NSObject(NSObject)doesNotRecognizeSelector:]:
答案 0 :(得分:0)
订单很重要!
您正在设置category1.tipTextField = tipsArray [0];
。此时tipsArray
为零。
然后您要为tipsArray
添加值。这不会影响category1.tipTextField
的价值。
答案 1 :(得分:0)
category1.tipTextField = tipsArray [0];
tipsArray = nill,即category1.tipTextField = nil。
Items *tip1 = [Items new]; tip1.tipTextField = @"Hello world!"; //Create tips array tipsArray = [NSArray arrayWithObjects: tip1, tip2, ... nil]; Items *category1 = [Items new]; category1.categoryName = @"Category1"; category1.categoryImage = @"image.png"; category1.tipTextField = tipsArray [0];
答案 2 :(得分:0)
或者通过覆盖getter在代码中的任何位置使用延迟实例化。
(NSArray *)tipsArray
{
if(_tipsArray)
{
_tipsArray = [NSArray alloc] initWithObjects:tip1, tip2, ... nil];
}
return _tipsArray;
}
答案 3 :(得分:0)
//Create tips array
tipsArray = [NSArray arrayWithObjects: tip1, tip2, ... nil];
应该到来之前,
category1.tipTextField = tipsArray [0];