我看到了这样一个问题:如何将UISwitch嵌入到静态UITableView中?
UISwitch in a UITableView cell
但它似乎处理动态页面。我真的只是试图为我的应用程序和表格中的一些单元格(而不是所有单元格)创建一个设置页面,并要求在表格单元格上进行切换。我怎么能这样做?
我看到了这样一个问题:如何将UISwitch嵌入到静态UITableView中?
UISwitch in a UITableView cell
但它似乎处理动态页面。我真的只是试图为我的应用程序和表格中的一些单元格(而不是所有单元格)创建一个设置页面,并要求在表格单元格上进行切换。我怎么能这样做?
只需将UISwitch拖放到您已布局的单元格上即可。然后你可以使用助理编辑器(这很棒)将它连接到父类。我会给你一个提示,如果你计划几个外观相似的单元格,创建第一个单元并将它放在恰当的位置,那么你可以增加该单元的行数,IB将创建副本现有的行为你。
您的工作方式与您链接到的问题完全相同。没有这种“动态”表格。该表只显示您的模型。你的模型可能是动态的,但tableview不是。无论哪种方式,请按照这个问题的答案,你会在你的tableview中有一个开关。
这是不正确的。从iOS 5开始,有静态单元格表视图不需要任何数据源,相反,动态原型单元格需要某种数据源。 –
够公平的。没有意识到这一点。阅读完文档后,尽管使用cellForRowAtIndexPath似乎更容易。 – sosborn
在我编辑的答案中看到视频链接,我想你会改变想法:将对象添加到SC电视有多容易 –
我为这种情况创建了一个函数,它的工作对我很有帮助。尝试一下,首先在单元格创建中,您可以检查要添加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];
}
而当值开关改变这个方法将被解雇..这样你就可以知道基于标签哪个交换机
- (void) didChangeSwitch:(UISwitch*)switchView
{
if(switchView.tag == 1001)
{
//Do Somthing
}
if(switchView.tag == 1002)
{
//Do Somthing
}
}
希望这会有所帮助:)
这远不如使用Interface Builder将切换拖到要使用的单元格那么简单。看看静态单元tableivews如何工作。当使用这些方法时,不需要任何数据源方法,就像在常规ViewController中一样,为对象连接IBActions。 –
以下是它在Interface Builder中的工作原理。不需要代码。
拖动一个UISwitch到您的视图控制器。它需要在 主视图之外。有些人只是在那里和其他一些东西一起冷落。
Ctrl-点击应该有这个开关的表视图单元格,并且 拖动到新的开关。见1。
将开关连接到表格视图单元的accessoryView插座。见2。
运行应用程序并观察出现在表格中的开关 - 完成了!
注意:交换机奇怪地不出现在接口生成器中。但它会在您运行应用程序时出现
如果您还想将它挂接到一个实例变量 - 例如,以便您稍后可以读取它的“on”属性 - 将它连接到插座就像您将其他视图3,4。
PS:请记住,UISwitch开/关状态处于 “开” 属性,而不是 “选择”。我只是添加这个,因为它有点混乱。
PPS:抱歉超大的像素,我在视网膜屏幕上。
+1静态电视使得这一点很容易。 :) – lnafziger
请注意,在故事板时,要将UISwitch元素拖放到静态UITableViewCell上,单元格必须是“自定义”样式 – Archie1986
@ Archie1986它也适用于“基本”单元格,尽管存在一些强制。 –