UITableView didselectRowAtIndex怀疑

时间:2012-01-17 13:17:51

标签: iphone uitableview didselectrowatindexpath evernote

哈,我正在做一个有evernote共享注释选项的应用程序,我已经成功完成了,我有一个包含文本的tableview和一个用于将这些文本上传到evernote的按钮,如果用户单击该单元格,那么accsocory checkmark是来吧,他可以通过使用uploade的复选标记来选择这节经文。但我的问题是,当用户点击一个单元格并点击上传按钮时,它将上传行中的所有值,不仅包括扇形行,还包括整行。 我的代码是 Buttonclick:

-(IBAction)sendNoteEvernote:(id)sender{

 NSMutableString *str = [[NSMutableString alloc] initWithString:@"NOTES:"];
    for (int i = 0; i<[appDelegate.notesArray count]; i++) {
        // UPLOAD STRINGS HERE
        if (selected[i])
        [str appendFormat:@"%@ ,",[appDelegate.notesArray objectAtIndex:i]];

        NSString * ENML= [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">\n<en-note>%@",str];
}

str是上传的值 selectrowatindexpath中的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

 NSUInteger row = [indexPath row];
    selected[row] = !selected[row];
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.accessoryType = selected[row] ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

in.h我决定BOOLEAN selected; 在viewdidload中

for ( int i=0; i<[appDelegate.notesArray count]; i++) { 
    selected[i] = YES;
}

1 个答案:

答案 0 :(得分:0)

我建议两个用于调试的线索。首先,您选择的默认值为YES,因此它假定默认选择所有行。其次,由于您正在查看点击事件,因此切换代码为:

selected[row] = !selected[row];

是不够的,你需要遍历数组,将所有内容设置为NO,除了你设置为YES的indexPath.row。

for ( int i=0; i<[appDelegate.notesArray count]; i++) {
    if (i == indexPath.row) selected[i] = YES; else selected[i] = NO;
}