2013-11-22 72 views
0

我有一个数组,我想在视图控制器之间传递。从ViewControllerA到ViewControllerB,但我的结果是零。我已经尝试过所有的东西。未在视图控制器之间传递的数组ios

当我在ViewControllerA中记录destViewController.textArraysParsed时,我看到了正确的结果。

Array (
Blake 
) 

但是,当我尝试NSLog的数组中ViewControllerB数组为空?我尝试了viewDidLoad,viewWillAppear和viewWillLoad方法来尝试NSLog数组,但它出来nil。

如何使用我在ViewControllerA中组成的数组,以便可以访问ViewControllerB中的数组。

ViewControllerA方法

ViewControllerA.h

#import <UIKit/UIKit.h> 
#import "BSKeyboardControls.h" 
#import "RegistrationBaseViewController.h" 

@interface Register1ViewController : RegistrationBaseViewController <UITextFieldDelegate, UITextViewDelegate, BSKeyboardControlsDelegate, UIPickerViewDelegate, UIActionSheetDelegate, UIPickerViewDataSource> { 

NSMutableArray *textArrays; 
} 

@property (nonatomic, retain) NSMutableArray *textArrays; 

@end 

ViewControllerA.m

textArrays =[[NSMutableArray alloc]initWithCapacity:10]; 
NSString *arrayString = [NSString stringWithFormat:@"%@", self.firstNameTxtFld.text]; 
[textArrays addObject: arrayString]; 
NSLog(@"Array %@", textArrays); 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
if ([segue.identifier isEqualToString:@"segRegister2"]) { 
    Register2ViewController *destViewController = segue.destinationViewController; 
    destViewController.textArraysParsed = textArrays; 
    NSLog(@"destViewController Array %@", destViewController.textArraysParsed); 
    } 
} 
+1

'Weak'或'Strong'指针? –

+2

我们可以看到“textArraysParsed”的声明吗? –

+0

是否属性?有力的参考? –

回答

0

所有我必须做的是改变强烈的保留。

+1

所以你不确定ARC和MRR之间的区别?如果是这种情况,那么这个问题就是冰山一角。 – trojanfoe

+0

你解决了你的问题吗?请标记正确的答案,将此帖标记为已回答。 –

-1

这是如何我通常通过视图控制器之间的阵列。我使用NSUserDefaults,除非我错过了解你的问题。

在你的ViewController一个

NSMutableArray *temp2MutableArray = [[NSMutableArray alloc] initWithObjects:@"1", @"2", nil]; 

[[NSUserDefaults standardUserDefaults] setObject:temp2MutableArray forKey:@"mySampleArray"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

在你的ViewController乙

NSArray *tempArray2 = [[NSUserDefaults standardUserDefaults] objectForKey:@"mySampleArray"]; 

NSMutableArray *temp2MutableArray = [[NSMutableArray alloc] initWithArray:tempArray2]; 
+1

使用默认系统将对象从一个视图控制器传递到另一个视图控制器似乎有点复杂,因为您可以轻松地将值分配给目标控制器中的属性。 – Caleb

+3

我不同意这种模式。 UserDefaults用于存储永久信息,仅仅因为它可以用来在全球传递信息并不意味着它应该。 –

+0

我在这里发布的代码是有效的。仅仅因为有一种方法可以让猫变皮肤并不意味着这种方式就不会有错。 –

1

只需修改属性的方法: -

@property (nonatomic, strong)NSMutableArray *textArrays; 
2

的iOS 7 - ARC

这不与工作既 “强”,也不是 “保留”。 (在这种情况下,我认为它是“强大的”)。

你必须先初始化它。有效。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    if ([segue.destinationViewController isKindOfClass:[Simulate class]]) { 
     if ([segue.identifier isEqualToString:@"SegueName"]) { 
      ViewController *vc = (ViewController *)segue.destinationViewController; 

      vc.array = [[NSMutableArray alloc] init]; 

      vc.array insertObject:@"Obj" atIndex:0]; 
     } 
    } 
} 
相关问题