我看到了这个问题:
UISwitch in a UITableView cell
但它似乎正在处理一个动态页面。我真的只是想为我的应用程序和表格中的一些单元格(不是所有单元格)创建一个设置页面,需要在表格单元格上进行切换。我怎么能这样做?
答案 0 :(得分:20)
以下是它在Interface Builder中的工作原理。不需要代码。
将UISwitch拖到View Controller中。它需要在外面 主要观点。有点只是在那里和其他东西一起冷静。
按住Ctrl键并单击应具有此开关的表格视图单元格 拖动到新的Switch。见1。
将开关连接到表格视图单元的accessoryView插座。见2。
运行应用程序并观看交换机出现在表格中 - 完成!
注意:交换机奇怪地没有出现在“接口”构建器中。但是当你运行应用程序时它会出现
如果您还想将其连接到实例变量 - 例如,您可以稍后阅读其“on”属性 - 将其连接到插座,就像您将其他任何视图3,{{3 }}。
PS:请记住,UISwitch开/关状态位于“on”属性中,而不是“选中”。我只是添加这个,因为它有点令人困惑。
PPS:对于超大的像素,我很抱歉,我在视网膜屏幕上。
答案 1 :(得分:5)
只需将UISwitch拖到您已布置的单元格上即可。然后,您可以使用助手编辑器(非常棒)将其连接到父类。一个提示我会给你,如果你计划几个外观相似的单元格,在该部分创建第一个并恰好放置,那么你可以增加该部分的行数,IB将创建副本你现有的行。
答案 2 :(得分: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
}
}
希望这会有所帮助:)
答案 3 :(得分:0)
您执行此操作的方式与链接到的问题完全相同。没有“动态”表这样的东西。该表只显示您的模型。您的模型可能是动态的,但tableview不是。无论哪种方式,请按照该问题的答案进行操作,您将在tableview中进行切换。