我遇到了一个看似非常简单的应用程序,我正在努力开发
基本上,我有一个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;
}
答案 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,然后在标识符中输入一个值。这必须与您正在创建的单元格的代码中的值匹配。