2013-05-15 30 views
0

所以我得到了一個帶有4個獨立按鈕的ViewController。當點擊按鈕1時,TableViewController1用項目列表彈出ViewController。當選擇一個項目時,TableViewController1下拉,button1現在具有在表格中選擇的文本。這很好。但是當我使用TableViewController2對button2執行完全相同的操作時,button1中的數據將被重置。iOS/Xcode - 多個segue標識符重置數據解析

我用塞格斯使用標識符,一些代碼:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"showEducation"]) { 
     NSIndexPath *indexPath = [self.tableViewEducation indexPathForSelectedRow]; 
     ViewController *destViewController = segue.destinationViewController; 
     destViewController.educationText = [tableViewArray objectAtIndex:indexPath.row]; 
    } 
} 

所以此刻我得到了每個按鈕和多重的.h和.m文件爲tableviews多個SEGUE標識符。我是否使用完全錯誤的技術來使其發揮作用?我希望我能夠清楚,否則我可以上傳圖片。

編輯:我只注意到,我的ViewController上也有一個滑塊。當單擊一個按鈕並在TableView中選擇一行時,滑塊將重置爲原始位置。與上述類似的問題。

+0

是兩個獨立的TableViewController對象,它們的數據源使用相同的對象/類嗎? –

+0

你是什麼意思? – Torylon

+0

沒有一個類或對象有你的「'cellForRowAtIndexPath'」方法,還是每個TableViewController對象都有自己的? –

回答

0

我在想你每次從tableViewController推送時都會推送到View Controller的新實例。

想象一下,您單擊ViewController0上的一個按鈕,將創建一個tableViewController1實例。當你點擊一行時,你只是使用performSegue創建一個ViewController0的NEW實例,並且它有自己的ViewDidLoad - 重置按鈕。

(你說的是,查看「下拉」,所以它的模式?) 不要從tableViewController使用performSegue回的viewController,請嘗試使用[self dismissModalViewController: withCompletion:](或類似的東西,記不清了),那麼你的tableViewController應該刪除它自己並顯示原始的ViewController。

現在,您沒有辦法更改按鈕的名稱,但可以通過從tableView中訪問sender來完成,該操作將爲您提供原始視圖控制器,而不是新的實例它。

讓發件人的一種方法是使用[performSegue...從ViewController0,並在它自己的prepareForSegue,你可以不喜歡

//In the first ViewController, not in the TableViewControllers 
-(void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender{ 
    if(sender == button1) 
    { 
     UITableViewController1 *dest = segue.destinationViewController; 
     [dest setSender: self]; 
    } 
} 

而且在TableViewController1你創建一個變量ViewController *home;和方法-(void)setSender:(ViewController*)sender; ,所以,在你的didSelectRowAtIndexPath,你可以說現在[[(ViewController0*)home button1]setTitle:@..];,然後[dismissModalViewController..]

還有其他的方法來做到這一點爲好,這取決於你是如何從你的viewController到tableViewController推動。我相信有更簡單的方法可以訪問發件人,但它可以工作,並且在您已經發送其他數據時非常有用。

+0

哇,好的解釋。看起來這很合乎邏輯,如果我閱讀這篇文章,我會嘗試一下代碼,但我不知道如何實現它。 – Torylon

+0

我沒有使用performSegue的方式,即時通過故事板的意見動畫。 – Torylon

+0

即時通訊也不使用didSelectRowAtIndexPath,不知道如果即時通訊做這個權利.. – Torylon