使用IBAction(Obj-C)对UITableView中的选定行执行某些操作

时间:2016-09-28 18:10:55

标签: ios objective-c uitableview

我希望能够选择一行或更多行,并通过IBAction做一些事情。

让我说我有四行,A,B,C和D.如果我选择A和B,然后按下连接到该IBAction的按钮,就会发生一些事情。

我该怎么做?

代码:

@implementation ViewController {

NSArray *names;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return [names count];

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *tableIdentifier = @"tableCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:tableIdentifier];

if (cell == nil) {

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:tableIdentifier];

}

cell.textLabel.text = [names objectAtIndex:indexPath.row];
return cell;

}

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

if ((indexPath.row == 0) && (indexPath.row == 2)) {

    NSLog(@"John and James selected.");

}


}

- (void)viewDidLoad {

[super viewDidLoad];
// Initialize table data
names = [NSArray arrayWithObjects:@"John", @"Michael", @"Hannah", @"James", nil];

}

谢谢!

1 个答案:

答案 0 :(得分:1)

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

    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];

    if ([selectedCell accessoryType] == UITableViewCellAccessoryNone) {
        [selectedCell setAccessoryType:UITableViewCellAccessoryCheckmark];
        [selectedIndexes addObject:[NSNumber numberWithInt:indexPath.row]];
    } else {
        [selectedCell setAccessoryType:UITableViewCellAccessoryNone];
        [selectedIndexes removeObject:[NSNumber numberWithInt:indexPath.row]];
    }

    [tableView deselectRowAtIndexPath:indexPath animated:NO];

}

此代码将在您选择的行上显示刻度线。

您还必须使用映射已检查单元格的数组,并且必须在cellForRowAtIndexPath中验证是否应检查accessoryType。

然后,在您的按钮操作中,您可以使用选定的行执行代码。

希望这有帮助!