我试图使用PrepareForSegue方法将数组从视图传递到另一个视图。 在第一个视图中,我得到一个名为"提交"的按钮。如果按下,则读取textView并将文本存储在NSArray中,然后将该数组传递给另一个视图(push segue),但是当数组到达时为空。 这是代码
//.h
@property (strong, nonatomic) NSArray *words;
//.m
- (IBAction)Submit:(id)sender{
//read textView
_words = [self.myTextView.text componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
//if Submit is pressed go to SecondViewController
if ([segue.identifier isEqualToString:@"secondSegue"]) {
SecondViewController *vc = [segue destinationViewController];
vc.array = _words;
}
}
所以这是接收数组
的SecondViewController的代码- (void)viewDidLoad
{
[self Calculate];
[super viewDidLoad];
// Do any additional setup after loading the view.
}
-(void)Calculate
{
int size = [array count];
NSLog(@"size is %d",size);
}
日志总是说"大小为0"。 我犯了一些错误吗? 可能是Segue发生之前我可以读取TextView并填充数组,所以它总是空的? 提前谢谢!
修改 我试图NSLog提交动作,我发现程序永远不会访问它,所以它永远不会读取! (p.s.是的我连接了按钮) 所以segue在Submit动作之前发生 我怎么解决?我可以在提交操作中复制PrepareForSegue代码吗?
答案 0 :(得分:1)
尝试在发送时复制数组,可以获得释放也确定 - (IBAction)submit
..正在调用吗?
我假设的提交按钮也有执行segue的动作。我不确定执行的顺序。尝试从准备segue而不是按钮调用方法Submit。这样你可以保证它首先被调用。
答案 1 :(得分:0)
你的问题是@synthesize会创建一个名为'words'的ivar,而不是'_words'。