Ios 在ViewController之间传递可变数组
我有上面的代码片段。我正在尝试加载一个新的viewcontroller,并将其可变数组(docsArray)对象分配给BookingDocumentsViewController.h中当前视图的可变数组(documentsArray)Ios 在ViewController之间传递可变数组,ios,objective-c,nsmutablearray,Ios,Objective C,Nsmutablearray,我有上面的代码片段。我正在尝试加载一个新的viewcontroller,并将其可变数组(docsArray)对象分配给BookingDocumentsViewController.h中当前视图的可变数组(documentsArray) BookingDocumentsViewController *bdVc = [self.storyboard instantiateViewControllerWithIdentifier:@"BookingDocs"]; bdVc.orId = r
BookingDocumentsViewController *bdVc = [self.storyboard instantiateViewControllerWithIdentifier:@"BookingDocs"];
bdVc.orId = rl_id;
bdVc.docsArray = self.documentsArray;
[self.navigationController pushViewController:bdVc animated:YES];
您可以在BookingDocumentsViewController中执行。m:
@property(nonatomic, retain)NSmutableArray *docsArray;
然后当你推视图的时候
@synthesize docsArray;
- (void)viewDidLoad
{
NSmutableArray *array = [NSmutableArray alloc]initWithArray:docsArray];
[super viewDidLoad];
}
可以考虑使用SeGuE。它为您实例化目的地VIEW控制器。然后在源视图控制器中实现
BookingDocumentsViewController *bdVc = [self.storyboard instantiateViewControllerWithIdentifier:@"BookingDocs"];
bdVc.orId = rl_id;
bdVc.docsArray = self.documentsArray;
[self.navigationController pushViewController:bdVc animated:YES];
[bdVc Release];
获取对目标viewcontroller的引用并设置其数据
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
我想我发现了这个问题。一个非常基本的错误。在bdVc的viewDidLoad中,我有以下几行:
NSLog(@“预订文档视图加载:%@”,self.docsArray.count);
这是导致错误的原因。是%@而不是%d。我想知道为什么xcode没有显示错误的正确原因
谢谢大家的帮助。:)发布崩溃的堆栈跟踪。您是否在bdVc的ViewDiLoad或ViewWillDisplay/ViewDidDisplay中使用docsArray?docsArray是强属性吗?是的docsArray是强属性。我不会在任何其他地方使用docsArray。正如已经问过的那样-请使用堆栈跟踪。控制台中没有错误,应用程序崩溃。我更新了问题。在viewDidLoad中创建一个不在任何地方使用的本地数组有什么意义?这离answerwell还差得远,你可以在.h中定义这个数组,如果你想在其他块中使用它,我只是专注于传递数组值funda…无论如何,将来会处理这个问题。
BookingDocumentsViewController *bdVc = [segue destinationViewController];
bdVc.docsArray = self.documentsArray;