2013-01-24 51 views
0

推的UIViewController我有2 UIViewControllersViewController_AViewController_BiPhone:從這裏推

我的流量,一個ViewController_A --->ViewController_B --->ÇViewController_A

對於A,B和C的導航我有以下的情況,

- 在ViewController_A我有100個記錄在UITableViewCell,用戶選擇任何一個,它會推到ViewController_B這將顯示從ViewController_A選定的記錄。

B - 將顯示從ViewController_A選定的數據,並有返回按鈕返回(我可以彈出)。另一件事,有一個UIButton,如果用戶點擊這個,它會再次顯示ViewController_A但只有單個記錄

Ç - 要麼我們將從ViewController_B彈出那麼就沒有問題,但我想再次推開,所以我需要#importViewController_AViewController_B(因爲我已經導入ViewController_BViewController_A所以我不能重新導入ViewController_BViewController_A,對吧?)會爲那些UIViewControllers創建衝突。

應該用什麼來解決這個問題的ç的更好的辦法,一個建議是,再拍`ViewController_D像並顯示相同ViewController_A,但我認爲它不是正確的方式,因爲我已經UIcoded爲功能。

需要建議。如果您有任何疑問,請告訴我!

+0

我認爲使用普通數組來加載Viewcontroller A中的tableview,並根據情況使用兩個不同的數組來覆蓋公共數組。並使用委託爲viewcontrollerB中的按鈕,將重新加載在viewcontroller中的tableview在delagate中只有一個記錄覆蓋公共數組,並按下viewcontroller B按鈕彈出viewcontroller。希望它可以幫你一點。 – Exploring

回答

2

我知道你有#import指令有問題嗎? 我想你是在.h文件中導入標題?如果是這樣,請在.m文件中執行#import;在.h中你應該使用@class YouViewControllerA。

防爆與AViewController:

.H

@class BViewController 

@interface AViewController : UIViewController 
{ 
    //Your attributes here 
} 

@end 

.M

#import "BViewController.h" 

@implementation AViewController 

//Some AViewController methods here 

@end 

這樣做對雙方AViewController和BViewController,它應該工作。

編輯: #import指令旨在避免遞歸錯誤,所以無論如何你不應該得到錯誤。 如果你知道一點預處理後,#進口做以下(自動):

#ifndef TOTO_HEADER 
#define TOTO_HEADER 

//your methods here 

#endif 

更多的解釋:

當你寫#進口「toto.h」,在編譯時編譯器將執行以下檢查:

  • 是否定義了預處理變量「TOTO_HEADER」? (這對應於行ifndef「TOTO_HEADER」)
  • 如果不是我們定義它(這是#define「TOTO_HEADER」行)並且我們「包含」方法和函數。
  • 如果它已被定義,則不需要包含方法(因爲它們已經包含在內)。

這樣我們就可以防止包含頭文件的頭文件被包含在內。 (並且通過擴展它不應該產生任何遞歸錯誤)。

換句話說:#import確保頭文件只包含一次,這樣您就不會遇到遞歸包含的問題。

+0

Ashbay,我知道這個soln,但正如我的問題,這樣做是可行的!我們正在兩個視圖控制器中導入這兩個文件進行推送。它不會產生任何問題嗎? – Hemang

+0

它不應該產生任何問題(請參閱我的編輯瞭解更多信息)。希望它會有所幫助。 – Ashbay

+0

阿什貝恩,哦,這是很好的編輯和指點!你能解釋一下嗎?它將如何實際工作? – Hemang

0

一個解決方案可能是這個 -

首先在保存NSUserDefaults的選定值,當你點擊的UIButton中的viewController B. 再取一個bool然後推順着接下去的ViewController A和檢查的價值布爾在那裏。 如果它是真的,那麼只打印NSUserDefaults的值,否則打印整個100條記錄。

+0

是的,問題是關於推送,請再次閱讀問題,問題不在於如何顯示數據,推送視圖控制器。 – Hemang

+0

然後Wats的問題,如果你可以從A推到B類似的,你可以從B推到A.我沒有看到它的任何問題 –

+0

好吧,我需要導入B到A和A到B推右?我的問題是,它會產生任何問題嗎?任何遞歸問題或任何類型的問題?閱讀點** C **。 – Hemang