2013-08-29 14 views
0

當我從視圖控制器1傳輸到視圖控制器2,然後是視圖控制器3時,我的NSString數據正在丟失。但是,當我從視圖控制器1傳輸到視圖控制器3時,它工作正常。所以我從viewcontroller 1切換到視圖控制器2的方式正在導致我由於某種原因失去nsstring數據。我會後我的代碼下面,但我的猜測是,我需要做一些視圖控制器2通過控制器後,NSString數據並未提供

viewcontroller1

-(void)button{ 
    stringEntered=textField.text; 
    ViewController2 *vc2 = [[ViewController3 alloc] init]; 
    vc2.string = [[NSString stringWithString:textField.text] retain]; 

    [self.navigationController pushViewController:vc2 animated:YES]; 
} 

視圖 - 控制2

-(void)button{ 
    ViewController3 *vc3 = [[ViewController3 alloc] init]; 
    [self.navigationController pushViewController:vc3 animated:YES]; 
} 

Viewcontroller3

NSString *emailBody = [NSString stringWithFormat:@"%@",string]; 
+0

你如何在你的控制器中聲明「字符串」?另外,不需要使用stringWithString或stringWithFormat,因爲textField.text和string都是字符串。 – rdelmar

+4

您沒有任何代碼可以將字符串傳遞給vc2中的按鈕方法中的vc3,那麼您爲什麼期望它能通過? – rdelmar

+0

因此,沒有任何簡單的方法可以將它保留在第二個視圖控制器中?基本上我猜你必須將數據從vc 1傳遞給vc2,然後將數據傳遞給vc3 –

回答

0

在下面一行

視圖 - 控制3 .h文件中寫入
@property(retain,nonatomic)NSString *string; 

和合成它在.m文件

@synthesize string; 

現在的ViewController 2

-(void)button{ 
    ViewController3 *vc3 = [[ViewController3 alloc] init]; 
vc3.string =string; 
    [self.navigationController pushViewController:vc3 animated:YES]; 
} 

確保你有適當的定義VC2字符串。

0

你可以創建一個Macro.h文件並創建如下的AppDelegate變量

extern AppDelegate * delegate;

在AppDelegate中聲明這樣

的AppDelegate *代表;

和的appdelegate中:didFinishLaunchingWithOptions:

做這樣

代表= [[UIApplciaiton sharedApplication]委託];

然後聲明一個的NSString *字符串中的appdelegate創造伊娃和財產,合成並使其副本類型屬性和

在viewcontroller1

分配delegate.string = @「」;

在視圖控制器,你可以訪問諸如

的NSString *字符串1 = delegate.string;

如果你在viewcontroller1或viewcontroller2沒有發現任何錯誤,說委託然後導入的appdelegate和macro.h文件中viewcontroller1和viewcontroller2

乾杯:)

相關問題