我看到了这个问题:
但它似乎正在处理一个动态页面。我真的只是想为我的应用程序和表格中的一些单元格(不是全部)创建一个设置页面,需要在表格单元格上进行开关。我怎么能这样做?
我看到了这个问题:
但它似乎正在处理一个动态页面。我真的只是想为我的应用程序和表格中的一些单元格(不是全部)创建一个设置页面,需要在表格单元格上进行开关。我怎么能这样做?
这是它在 Interface Builder 中的工作方式。无需代码。
将 UISwitch 拖到您的视图控制器中。它需要在主视图之外。有点只是在那儿放松一下,还有其他一些事情。
Ctrl-单击应该具有此开关的表视图单元格,然后拖动到新开关。见1。
将开关连接到表格视图单元的附件视图插座。见2。
运行应用程序并观察开关出现在表格中 - 完成!
注意:这个开关奇怪地没有出现在界面生成器中。但它会在您运行应用程序时显示
如果您还想将它连接到一个实例变量 - 例如,以便您稍后可以读取它的“on”属性 - 将它连接到一个插座,就像您连接任何其他视图3、4一样。
PS:请记住,UISwitch 的开/关状态是在它的“on”属性中,而不是“selected”。我只是添加这个,因为它有点令人困惑。
PPS:对不起,我在视网膜屏幕上。
只需将 UISwitch 拖到您布置的单元格上。然后,您可以使用助手编辑器(非常棒)将其连接到父类。我会给你一个提示,如果您计划几个外观相似的单元格,请在该部分中创建第一个并将其布置得恰到好处,然后您可以增加该部分中的行数,IB 将创建副本为您现有的行。
我为这种情况创建了一个函数,它对我很有用.. 尝试一下,首先在单元格创建中,您可以检查要添加的行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
}
}
希望这会有所帮助:)
您的操作方式与您在链接到的问题中的操作方式完全相同。没有“动态”表这样的东西。该表仅显示您的模型。您的模型可能是动态的,但 tableview 不是。无论哪种方式,按照该问题的答案,您将在您的表格视图中进行切换。