1

我可以知道如何将 UISwitch 在 UITableViewCell 中定位到正确的位置吗?我没有使用情节提要添加切换按钮!

在此处输入图像描述

这是controller.m中的代码


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    NSString *note = [self.notes objectAtIndex:indexPath.row];
    [cell.textLabel setText:note];

    //TableView Cell Background Images
    cell.backgroundView =  [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"bg.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ];
    cell.selectedBackgroundView =  [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"cell.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:5.0] ];

    //add switch button start
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // Configure the cell...
    UISwitch *aSwitch = [[UISwitch alloc] init];
    [aSwitch addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
    [cell.contentView addSubview:aSwitch];
    //add switch button end

    return cell;
}

4

3 回答 3

4

你可以试试这个......

UISwitch *aSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(225.0, 0.0, 80.0, 45.0)];
[aSwitch addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
aSwitch.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;
[cell.contentView addSubview:aSwitch];
于 2013-05-30T19:22:55.627 回答
0

或者你可以继承 UITableCellView 并添加 UISwitch 并在那里设置它的框架。这样,您所要做的就是在 cellForRowAtIndexPath 中设置目标和操作。

于 2013-05-30T19:27:31.797 回答
0

设置框架(或中心)。但是也:

  1. 创建单元格时创建并添加开关,否则单元格中会有多个开关
  2. 确保单元格存在后配置单元格

就像是:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    //add switch button start
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

        //TableView Cell Background Images
        cell.backgroundView =  [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"bg.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ];
        cell.selectedBackgroundView =  [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"cell.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:5.0] ];

        cell.frame = CGRectMake(0, 0, 200, 44);

        // Configure the cell...
        UISwitch *aSwitch = [[UISwitch alloc] init];
        aSwitch.tag = 123123;

        CGRect switchFrame = aSwitch.frame;
        switchFrame.origin.x = 200 - switchFrame.size.width;
        switchFrame.origin.y = 22 - (switchFrame.size.height * 0.5);
        aSwitch.frame = switchFrame;

        [aSwitch addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
        [cell.contentView addSubview:aSwitch];
        //add switch button end
    }

    // configure the cell
    NSString *note = [self.notes objectAtIndex:indexPath.row];
    [cell.textLabel setText:note];

    // configure the switch
    UISwitch *aSwitch = (UISwitch *)[cell viewWithTag:123123];
    aSwitch. ...;

    return cell;
}
于 2013-05-30T19:20:28.967 回答