iphone中的复选标记问题

时间:2011-08-31 11:41:30

标签: iphone facebook uitableview

我是iPhone新手。我正在创建一个应用程序。为此,我想向朋友发送我的应用程序邀请到Facebook个人资料。我的Facebook好友列在TableView中。

我想一次选择40个恶魔并向朋友的墙发送邀请。

在我的应用程序中,我写信给我的朋友们展示:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Displayfriendscell";
    Displayfriendscell *cell = (Displayfriendscell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[Displayfriendscell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }
    // Configure the cell...
    NSString *name=[Friendsarray objectAtIndex:indexPath.row];
    //NSLog(@"name is%@",friendid);
    cell.nameLabel.text = name;
    return cell;
}

我该怎么做?我不知道复选标记及其工作原理。我只是想知道它。任何人都可以帮我实现吗?

3 个答案:

答案 0 :(得分:1)

基本上,单元格有一个您可以使用的复选标记的accessoryType: 未选择的单元格从没有附件类型开始:

cell.accessoryType = UITableViewCellAccessoryNone;

选择单元格时:

cell.accessoryType = UITableViewCellAccessoryCheckmark;

此外,在某处你需要跟踪数据源中哪些项目(即Helloarray)被选中,因为UITableView将重用它的单元格。例如,另一个数组填充NSNumbers - 0表示未选中,1表示选择(另一个例子是将Friendsarray更改为2维数组。或者,由于您与Facebook集成,从长远来看创建类可能是最好的'朋友'并制作一个数组,其中一个字段被“选中”。)

由于UITableView在滚动表格时会重复使用单元格,因此您的cellForRowAtIndexPath需要检查您的数组,以查看是否应将单元格设置为选中或取消选中。

选择单元格的代码包括:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

当用户完成后,您将遍历数据源(您的数组或其他任何内容)并获取所选的朋友。

希望这是你正在寻找的指导。

答案 1 :(得分:0)

这可能会对您有所帮助:

你的cellForRowAtIndexPath方法中的

是这样的:

NSString *name=[Friendsarray objectAtIndex:indexPath.row];
UILabel *lblName = [[UILabel alloc]initWithFrame:CGRectMake(10, 8, 250, 20)];
lblName.text = name;
[cell addSubview:lblName];

UIButton *btnCheck = [UIButton buttonWithType:UIButtonTypeCustom];
btnCheck.frame = CGRectMake(290, 8, 16, 16);
[btnCheck setImage:[UIImage imageNamed:@"checkbox.png"] forState:UIControlStateNormal];
[btnCheck setTitle:@"0" forState:UIControlStateNormal];
[btnCheck addTarget:self    action:@selector(btnClicked:)forControlEvents:UIControlEventTouchUpInside];
btnCheck.tag = indexPath.row+1;
[cell addSubview:btnCheck];

//在选择器方法(btnClicked)中:

 -(void)btnClicked:(id)sender
 {

UIButton *btnTemp = (UIButton*)sender;
UIButton *btnSelected = (UIButton*) [self.view viewWithTag:btnTemp.tag];
NSString *strTitle = btnSelected.titleLabel.text;
  if([strTitle isEqualToString:@"0"])
  {
    [btnSelected setTitle:@"1" forState:UIControlStateNormal];
    [btnSelected setImage:[UIImage imageNamed:@"checkbox-checked.png"] forState:UIControlStateNormal];
      }
  else 
  {
    [btnSelected setTitle:@"0" forState:UIControlStateNormal];
    [btnSelected setImage:[UIImage imageNamed:@"checkbox.png"] forState:UIControlStateNormal];
  }
}

//使用两个图像,一个是小sqaure,另一个是带刻度标记的图像

答案 2 :(得分:0)