2012-05-29 28 views

回答

5

只需将UISwitch拖放到您已布局的单元格上即可。然后你可以使用助理编辑器(这很棒)将它连接到父类。我会给你一个提示,如果你计划几个外观相似的单元格,创建第一个单元并将它放在恰当的位置,那么你可以增加该单元的行数,IB将创建副本现有的行为你。

+0

+1静态电视使得这一点很容易。 :) – lnafziger

+7

请注意,在故事板时,要将UISwitch元素拖放到静态UITableViewCell上,单元格必须是“自定义”样式 – Archie1986

+0

@ Archie1986它也适用于“基本”单元格,尽管存在一些强制。 –

0

您的工作方式与您链接到的问题完全相同。没有这种“动态”表格。该表只显示您的模型。你的模型可能是动态的,但tableview不是。无论哪种方式,请按照这个问题的答案,你会在你的tableview中有一个开关。

+0

这是不正确的。从iOS 5开始,有静态单元格表​​视图不需要任何数据源,相反,动态原型单元格需要某种数据源。 –

+0

够公平的。没有意识到这一点。阅读完文档后,尽管使用cellForRowAtIndexPath似乎更容易。 – sosborn

+2

在我编辑的答案中看到视频链接,我想你会改变想法:将对象添加到SC电视有多容易 –

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]; 
} 

而当值开关改变这个方法将被解雇..这样你就可以知道基于标签哪个交换机

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

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

希望这会有所帮助:)

+1

这远不如使用Interface Builder将切换拖到要使用的单元格那么简单。看看静态单元tableivews如何工作。当使用这些方法时,不需要任何数据源方法,就像在常规ViewController中一样,为对象连接IBActions。 –

15

以下是它在Interface Builder中的工作原理。不需要代码。

  • 拖动一个UISwitch到您的视图控制器。它需要在 主视图之外。有些人只是在那里和其他一些东西一起冷落。

  • Ctrl-点击应该有这个开关的表视图单元格,并且 拖动到新的开关。见1enter image description here

  • 将开关连接到表格视图单元的accessoryView插座。见2enter image description here

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

注意:交换机奇怪地不出现在接口生成器中。但它会在您运行应用程序时出现

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

enter image description here enter image description here

PS:请记住,UISwitch开/关状态处于 “开” 属性,而不是 “选择”。我只是添加这个,因为它有点混乱。

PPS:抱歉超大的像素,我在视网膜屏幕上。

+0

这看起来很有希望..但是在第二步之后,'这将使开关出现在表格中 - 完成!'第一部分我看不到开关出现在表格中。我很确定我正确地执行了这些步骤,因为我看到黑色弹出窗口 - accessoryView出现。任何线索? – Bruce

+0

好 - 运行应用程序 - 你看到开关了吗?我刚刚意识到它不会在Interface Builder中显示出来。但是当你运行这个应用程序时它会在单元格中。试试一旦它适用于你,我会更新那里的措辞。 – n13

+0

你说得对,它出现在我想要的地方。真棒!我还想出了如何挂钩开关以便在翻转时运行一些代码。任何指针? – Bruce

相关问题