2011-12-22 133 views
0

這就是我到目前爲止得到的結果。 mainview.m將數據從一個視圖傳遞到另一個視圖(Storyboard,iOS)

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender(id)sender { 
secondView *secView = [segue destinationViewController] 
secView.ext = @".com"; 
} 

secondView.h

@interface secondView : UIViewController { 
NSString *ext; 
} 
@proper (nonatomic, retain) NSString *ext; 
@end 

secondView.m

-(void)viewDidLoad { 
NSString *url = [@"www.google" stringByAppendingFormat:ext] 
} 

而且它返回一個錯誤說ext是空......我究竟做錯了什麼?

回答

1

您是否嘗試將分機轉換爲屬性?我的理解是,「點」表示法實質上是將你的代碼

[secView setExt:@".com"] 

所以,開啓SecondView.h到

@interface secondView : UIViewController 

@property (nonatomic, copy) NSString *ext; 

@end 

而且不要忘了@synthesize它在你的.m文件

+0

我確實有過這些行..我只是忘了在這裏輸入它們,讓我編輯! – Cloaky 2011-12-22 19:30:58

1

檢查如下:

  1. 確保@synthesize ext;是SecondView.m
  2. 在故事板中,您是否正確鏈接了Segue?
  3. 在Stodyboard中,是表示SecondView定義爲SecondView類的viewController嗎?
  4. 確保您通過prepareForSegue:sender方法調用SecondView(即SecondView不會在您的代碼中的其他位置調用pushViewController:animated)。
1

把一個斷點在該行:

secView.ext = @".com"; 

,並確保該ext伊娃是在轉讓之後正確設置。如果不是,您可能會指定訪問者在您的@synthesize指令中使用不同的伊娃爾ext,或者您可能提供了一個設置器-setExt:,它沒有正確設置伊娃。

如果ext在賦值後正確設置,也許你有兩個不同的secondView實例。當人們使用.xib文件時,這種情況經常發生 - 他們會在代碼中創建一個視圖控制器,並在.xib文件中創建另一個相同類的實例。我不希望在這裏遇到這種情況,因爲你從segue直接獲得secView,但是值得思考。

+0

我剛發現問題..我從mainView指向選項卡欄控制器,而不是Tab1(這是第二個視圖),這是導致destinationViewController返回別的! – Cloaky 2011-12-22 20:57:32

+0

我想這個解決方案是destinationController到你期望的類型。這會讓你知道你沒有選擇正確的類型。 – Oli 2011-12-23 17:44:43

1

有兩個視圖:view1和view2。

  • 添加view2.h文件中的視圖2 view1.h
  • 初始化對象並設置其變量。
相關問題