2013-12-11 35 views
0

我是iOS開發新手。我創建了兩個類UITableViewController。一個是Tasks的列表,第二個是Notes的列表。現在如何將UITableViewController創建爲可重用模塊?

問題是這兩個UITableViewController的需要在許多畫面(有些畫面中同時使用)。我不想在每個屏幕上重新編寫UITableView delegates and datasource的所有代碼。我想重新使用UITableViewController和一些繼承機制或模塊系統。

因此,在每個需要顯示列表的UIViewController上,我只需要在nib文件中添加一個UITableView,設置其自定義類,它應該開始顯示數據。

它可能與某種類型的繼承,組件或模塊系統?

任何幫助表示讚賞。

+0

感謝您的回覆,我已經創建了一個單獨的UITableViewController,並實現了所有必需的委託和數據源方法。現在我想在多個屏幕上使用這個UITableViewController。任務和註釋是完全不同的東西。你可以忘記他們。問題是如何在多個屏幕上重新使用UITableViewController。 – Khawar

回答

0

創建的UITableViewController的子類中添加所有必需的委託方法和在h文件增加:

@property(nonatomic, strong) NSArray *myData; 

所有建立基礎,陣列上的方法,例如:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return self.myData; 
} 

當你想使用這個只是創建對象,並傳遞你的數據:

MYTable *tableViewController = [[MYTable alloc] init]; 
tableViewController.myData = DATA YOU WANT TO DISPLAY; 

它會工作,但你必須傳遞完全相同的數據結構到你的NSArray中,以便在cellForRowAtIndexPath:方法中處理它。

+0

感謝您的回覆。我仍然困惑。 我創建了TaskViewController,它運行良好。現在我想在我的實際屏幕DashboardViewController中使用它。那麼我應該如何在DashboardViewController中使用TaskViewController?如果我做TaskViewController * taskVC = [[TaskViewController alloc] init]; [taskVC.tableView reloadData]; 它不起作用。目前我已經硬編碼TaskViewController中的dataArray。 – Khawar

+0

不要硬編碼dataArray,使用屬性我把我的帖子,一旦你創建它添加:taskVC.dataArray =你的數組顯示。 – Greg

+0

感謝Greg,數據對我來說不成問題。它已經設置在TaskViewController中,你可以假設我需要在所有屏幕上顯示硬編碼的數據。因此我在TaskViewController中創建了數據。所以不需要在所有其他屏幕上一次又一次地設置。其實我正在考慮MVC模式。我想創建一個視圖控制器。我可以在任何屏幕上使用我想要的。就像一個組件或插件。 – Khawar

-1

嘿隊友你需要維護兩個數組並創建一個切換按鈕前。的a/b

如果被按壓,然後取一個陣列的計數,如果b按下計數其他詞典的陣列。並通過維護一個BOOL變量來做到這一點。

ex。 BOOL checkvalue;

-(UIButton *)a:(id)button 
{ 
    checkvalue = TRUE; 
    [tableview reloadData]; 
} 
-(UIButton *)b:(id)button 
{ 
    checkvalue = FALSE; 
    [tableview reloadData]; 
} 

現在把條件放在tableview counting的行數和cellforrowatindexpath方法中。 一樣, //爲numberOfRowsInTableview

if(checkvalue == TRUE) 
{ 
return [arr1 count]; 
} 
else 
{ 
return [arr2 count]; 
} 

,類似的還有的cellForRowAtIndexPath 感謝,並有一個愉快的一天。