我正在尝试使用PrepareForSegue 方法将数组从一个 View 传递到另一个 View 。 在第一个 View 中,我有一个名为“提交”的按钮,如果按下该按钮,则会读取 textView 并将文本存储在 NSArray 中,然后应将此数组传递到另一个 View (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 提交操作,但我发现该程序永远不会访问它,因此它永远不会读取! (附:是的,我连接了按钮) 所以segue发生在提交操作之前 我该如何解决?我可以在“提交”操作中复制“PrepareForSegue”代码吗?
最佳答案
尝试在发送数组时复制数组,您确定 -(IBAction)submit
.. 正在被调用吗?可能会被释放?
我认为提交按钮也具有执行 segue 的操作。我不确定执行顺序。尝试从准备转场调用 Submit 方法,而不是从按钮调用。这样你就可以保证它首先被调用。
关于ios - 传递 NSArray 使数组为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19965044/