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

Iphone 如何在按下按钮时动态更新UITableView?,iphone,ios,xcode,uitableview,Iphone,Ios,Xcode,Uitableview,我一直在努力开发一款看似非常简单的应用程序 基本上,我有一个UITable和两个按钮:红色/蓝色 当按下一个按钮时,表中会追加一行与该按钮对应的标题 UITableView必须实现的复杂性(数据源、委托、可恢复标识符等)让我不知所措 谁能帮我解决这个问题,最好给我详细的代码 我的纽扣是这样的 - (IBAction)buttonPressed:(UIButton *)sender{ NSString *item = sender.currentTitle; [self.cell

我一直在努力开发一款看似非常简单的应用程序

基本上,我有一个UITable和两个按钮:红色/蓝色

当按下一个按钮时,表中会追加一行与该按钮对应的标题

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

既然你正在学习这一点,我将发布一个简单的解决方案。 使添加一个成员变量
NSMutableArray*s

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

试试这个..

我建议对UITableViewController进行子类化,然后重写dataSource和委托方法,您应该可以开始了。直接使用UITableView更为复杂,没有任何明显的好处

您可能没有使用核心数据,但我仍然推荐这堂课,因为它连接了一个TableViewController,效果非常好——包括所有代码。请查看:

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

享受


Damien

我想在上面加上“还有一件事,编译器会显示一个警告,上面说没有可重用的标识符。那到底是什么?”

他的回答是正确的,但是为了摆脱这个警告


tableview的tableviewcell必须具有标识符。在IOS 5中,在情节提要中,高亮显示TableView中的TableViewCell,并在标识符中输入一个值。这必须与您正在创建的单元格代码中的值相匹配。

到目前为止您做了什么??添加一些您为tableview委托方法编写的代码。您只需要更新数据源,然后调用[yourtable reloadData]老实说,我不知道从哪里开始,我应该在哪里编写委托和数据源?我完全不懂这些术语。我查看了一些教程,但它们都是关于UITableViewController的,稍后将在视图中调用它。但是我的应用程序要求我的UITableView对象留在我的视图中并动态更新自身,在这种情况下,我认为我不应该创建一个新的UITableViewController类来实现这一点,它看起来非常像我正在寻找的,/hug。我可以将datasource方法放在我的rootviewcontroller.m中吗?可以。。但是您的视图控制器中仍然需要一个表视图..请查阅有关如何在YouTube上创建iboutlets的教程Bei ctrl将UtableView和UtableCell都拖到my.h文件中以给它们一个变量名,因此我假设我可以用这些名称替换YOURTABLEVIEW和YOURCELL,对吗?还有一件事,编译器显示一条警告,表示没有可重用标识符。taht到底是什么?从来没有听说过没有可重用的标识符..它在哪一行???另外,您必须使用您的变量名,而不是我的变量名…还要确保您的视图控制器是tableview的委托和数据源。