8

我看到了这个问题:

UITableView 单元格中的 UISwitch

但它似乎正在处理一个动态页面。我真的只是想为我的应用程序和表格中的一些单元格(不是全部)创建一个设置页面,需要在表格单元格上进行开关。我怎么能这样做?

4

4 回答 4

23

这是它在 Interface Builder 中的工作方式。无需代码。

  • 将 UISwitch 拖到您的视图控制器中。它需要在主视图之外。有点只是在那儿放松一下,还有其他一些事情。

  • Ctrl-单击应该具有此开关的表视图单元格,然后拖动到新开关。见1在此处输入图像描述

  • 将开关连接到表格视图单元的附件视图插座。见2在此处输入图像描述

运行应用程序并观察开关出现在表格中 - 完成!

注意:这个开关奇怪地没有出现在界面生成器中。但它会在您运行应用程序时显示

如果您还想将它连接到一个实例变量 - 例如,以便您稍后可以读取它的“on”属性 - 将它连接到一个插座,就像您连接任何其他视图34一样。

在此处输入图像描述 在此处输入图像描述

PS:请记住,UISwitch 的开/关状态是在它的“on”属性中,而不是“selected”。我只是添加这个,因为它有点令人困惑。

PPS:对不起,我在视网膜屏幕上。

于 2015-08-07T09:32:16.393 回答
5

只需将 UISwitch 拖到您布置的单元格上。然后,您可以使用助手编辑器(非常棒)将其连接到父类。我会给你一个提示,如果您计划几个外观相似的单元格,请在该部分中创建第一个并将其布置得恰到好处,然后您可以增加该部分中的行数,IB 将创建副本为您现有的行。

于 2012-05-29T11:30:30.393 回答
2

我为这种情况创建了一个函数,它对我很有用.. 尝试一下,首先在单元格创建中,您可以检查要添加的行UISwitch,例如。

 if(indexPath.row == 0)
      [self createOnOffView:cell withTitle:@"Somthing"  withTag:1001 defaultVal:YES];

功能是:

- (void) createOnOffView:(UITableViewCell*) cell withTitle:(NSString*) title withTag:(int)tag defaultVal:(BOOL) defaultVal
{
    CGRect rect;

    cell.textLabel.text = title;
    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    rect = cell.contentView.frame;

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        rect.origin.x = cell.frame.size.width - 20;
    else
        rect.origin.x = rect.size.width/2 +35;

    rect.origin.y = rect.size.height/2 - 15;    
    rect.size.width = 60;    

    UISwitch *switchView = [[UISwitch alloc] initWithFrame:rect];
    [cell.contentView addSubview:switchView];
    [switchView addTarget:self action:@selector(didChangeSwitch:) forControlEvents:UIControlEventValueChanged];

    switchView.tag = tag;

    [switchView setOn:defaultVal];

    [switchView release];
}

当值是 switch 改变时,这个方法将被触发..所以你可以根据标签知道哪个开关

- (void) didChangeSwitch:(UISwitch*)switchView
{
    if(switchView.tag == 1001)
    {
       //Do Somthing
    }

    if(switchView.tag == 1002)
    {
        //Do Somthing
    }    
}

希望这会有所帮助:)

于 2012-05-29T12:32:43.047 回答
0

您的操作方式与您在链接到的问题中的操作方式完全相同。没有“动态”表这样的东西。该表仅显示您的模型。您的模型可能是动态的,但 tableview 不是。无论哪种方式,按照该问题的答案,您将在您的表格视图中进行切换。

于 2012-05-29T11:31:38.503 回答