如何在按下按钮时动态更新UITableView?

时间:2012-02-12 06:10:23

标签: iphone ios xcode 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;
}

3 个答案:

答案 0 :(得分:2)

因为你正在学习这个...我将发布一个简单的解决方案。 添加成员变量NSMutableArray *cellArrays;

viewDidLoad

中初始化它

buttonPressed检查;

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];
}

试试这个..

答案 1 :(得分:0)

我建议继承UITableViewController,然后覆盖dataSource和委托方法,你应该好好去。直接使用UITableView更复杂,没有任何明显的好处。

您可能没有使用Core Data,但我仍然推荐这个讲座,因为它连接了一个TableViewController并且效果很好 - 包括所有代码。看看:

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

iTunes U中的讲座进一步解释了一切。

享受,

达明

答案 2 :(得分:0)

我想补充说:“还有一件事,编译器会显示一条警告说没有可重用的标识符。究竟是什么?”以上...

他的回答是正确的,但是要摆脱那个编译器的警告...

tableview的tableviewcell必须有一个标识符。在IOS 5中,在故事板中,突出显示TableView中的TableViewCell,然后在标识符中输入一个值。这必须与您正在创建的单元格的代码中的值匹配。