2012-02-12 85 views
1

我被困在一個看似很簡單的應用程序,我想開發如何在按下按鈕時動態更新您的UITableView?

基本上,我有一個UITable,和兩個按鈕:紅/藍

當按下一個按鈕,與行該按鈕的對應的標題被附加到表

enter image description here

我通過多麼複雜的UITableView必須實施(數據源,委託,可重複使用的標識符,等等)

不堪重負

誰能幫我出這一點,最好告訴我詳細的代碼

對於我的按鈕,我有這樣的事情

- (IBAction)buttonPressed:(UIButton *)sender{ 
    NSString *item = sender.currentTitle; 
    [self.cellArray addObject:item]; 
    [self.myTable reloadData]; 
} 
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return self.cellArray.count; 
} 


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

{ 
    static NSString *CellIdentifier = @"The Table Cell"; 

    self.myTableCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (self.myTableCell == nil) { 
     self.myTableCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 
    self.myTableCell.textLabel.text = [self.cellArray objectAtIndex:indexPath.row]; 
    return self.myTableCell; 
} 
+0

到目前爲止你做了什麼?添加一些你已經爲tableview委託方法編寫的代碼。你只需要更新數據源,然後誠實地調用[yourtable reloadData] – jkr 2012-02-12 06:15:10

+0

,我不知道從哪裏開始,我在哪裏編寫委託和數據源?我完全符合這些條款。我檢查了一些教程,但它們都是關於UITableViewController的,後面會在視圖中調用它。但我的應用程序需要我的UITableView對象留在我的視圖,並動態更新自己,在這種情況下,我不認爲我應該創建一個新的UITableViewController類來做到這一點 – Shakesbeer 2012-02-12 06:22:01

回答

2

既然你正在學習this..i將發佈一個簡單的解決方案。 添加一個成員變量NSMutableArray *cellArrays;

buttonPressed檢查初始化它在你的viewDidLoad

;

if([@"red" isEqualToString:[YourButton titleForState:UIControlStateNormal]]) 
{ 
[self.cellArrays addObject:@"red"]; 
} 
else 
{ 
[self.cellArrays addObject:@"blue"]; 
} 
[self.YOURTABLEVIEW reloadData]; 

現在,在您的表視圖的數據源方法

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


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

{ 
//in between your code; 
YOURCELL.textlabel.text = [self.cellArrays objectAtIndex : indexpath.row]; 
} 

試試這個..

+0

這看起來非常像我正在尋找/擁抱。我可以把數據源方法放在我的rootviewcontroller.m中嗎? – Shakesbeer 2012-02-12 06:26:38

+0

是的..但你仍然需要在你的視圖控制器中的表視圖。如何在youtube上創建iboutlets教程 – Shubhank 2012-02-12 06:46:18

+0

我ctrl拖動UITableView和UITableCell我的.h文件給他們一個變量名,所以我假設我可以用這些名稱替換YOURTABLEVIEW和Y​​OURCELL吧? – Shakesbeer 2012-02-12 07:12:54

0

我建議子類的UITableViewController,然後覆蓋的數據源和委託方法,你應該是好去。直接使用UITableView更復雜,沒有任何明顯的好處。

您可能沒有使用核心數據,但我仍然推薦這個講座,因爲它連接了一個TableViewController並且效果很好 - 包含所有代碼。檢查出來:

http://www.stanford.edu/class/cs193p/cgi-bin/drupal/node/289

講座在iTunes U中進一步解釋一切。

享受,

達明

0

我想補充一點,「還有一兩件事,編譯器顯示警告說,沒有可重複使用的標識符。究竟是什麼呢?」以上......

他的答案是正確的,但要擺脫編譯器警告的...

你的tableview的tableviewcell都必須有一個標識符。在IOS 5中,在故事板中,突出顯示TableView中的TableViewCell,然後在標識符中輸入一個值。這必須與您正在創建的單元的代碼中的值匹配。