2012-01-03 40 views
0

我在執行我的應用程序時遇到以下問題。 我有一個選項卡式應用程序,並單擊每個可以訪問相應視圖的選項卡:例如,單擊tab2打開view2。但我可以訪問通過點擊上,其由作爲廠景的按鈕也視圖2如下:通過Tabs或Segges訪問視圖時的不同行爲

... 
[buttonToView2 addTarget:self action:@selector(gotoView2) forControlEvents:UIControlEventTouchUpInside]; 
... 

其中:

- (void)gotoView2 
{ 
    //execute segue programmatically 
    [self performSegueWithIdentifier: @"View2Segue" sender: self]; 
} 

視圖2具有的表中顯示填充了數據陣列的數據從互聯網(在viewDidAppear方法)。 因此,選擇tab2或單擊該按鈕都會使用戶到達目標視圖2。

這工作,但在這兩種情況下不同的行爲:

  • 如果我點擊選項卡上,該表已經填充數據,而應用程序從互聯網
  • 檢索信息。如果我點擊按鈕和我執行segue,表是空的,而應用程序從互聯網檢索信息

爲什麼?也許是因爲按鈕調用的選擇器是在不同的線程上執行的? 有什麼想法嗎?

問候, yassa

+0

確保您已正確實施' - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender' for your seque(請參閱有幫助的帖子?:http://stackoverflow.com/questions/8680453/programatically -copy-array-to-new-view-in-storyboard) – petert 2012-01-03 16:23:18

+0

在這種情況下,我沒有實現'prepareForSegue',因爲我沒有信息必須傳遞到目標視圖2 ... 我會試着更好地解釋。我有:@interface View2:UIViewController NSArray * arrayView2; UIImage * profileImage; ....' 如果我第二次通過選項卡訪問此視圖,則會填充所有這些變量。如果我通過Segue以編程方式訪問,他們是nul。 – yassassin 2012-01-04 08:14:14

回答

0

每次一個Segue公司執行它創建(在這種情況下視圖2)的destinationViewController的新實例。意思是你有2個獨立的view2實例。

+0

,有可能以某種方式避免這種情況?或者有沒有解決方法?感謝您的回答!!! – yassassin 2012-01-04 21:42:39

+0

有沒有辦法避免Segue的做法。但也許想到重新設計你的應用程序的流程。例如,您可以將按鈕編程切換到第二個選項卡,而不是執行segue。 – agilityvision 2012-01-04 21:57:06

+1

你的意思是這樣的: 'View2 * currentImageDetail = [self.storyboard instantiateViewControllerWithIdentifier:@「View2Identifier」]; [self.View1 addSubview:currentImageDetail.view];' 還是有更好的方法嗎?非常感謝!!! – yassassin 2012-01-05 08:44:57

相關問題