2013-11-22 107 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]; 
     } 
    } 
} 
相關問題