2011-09-21 86 views
0

我有一个包含8个项目(静态)的UITableView。现在,当我点击8个单元格中的每个时,每个单元格都包含1个单一控件我们可以使用initWithNibName来重复使用具有不同视图的相同.xib文件吗?

例如:

  1. 点击细胞1:具有新UIPickerView视图。

  2. 点击细胞2:用的UIDatePicker

  3. 按此小区3的另一个视图:有一个的UITextField更图。 。 ......等等。

我可以使用只有一个的.xib文件,其中包含所有的控制,但是当我点击该小区只有控制是可见的,其他所有被隐藏。

另外我希望那些控件的值应该返回到Table Cell的detailText。

我该如何重用一个.xib文件?我可以用不同的nib名称调用xib文件并检查initwithnibname方法吗?

请ü可以给我这个好例子....

+1

您可以将所有控件放在单个xib中,并根据单元格选择显示/隐藏。 –

+0

但是,我怎么能确定哪个值在DetailView中设置?假设单元格1处的单击值设置表中的选择器值。点击单元格2,日期设置?等 – DShah

回答

0

基本上我找到的唯一的方法是设置在哪里,你只显示一些控制在特定的条件条件语句和隐藏他人在其他条件下类似。

我认为这是您可以根据同一个XIB中的单元格选择显示不同控件的唯一方法。

希望这可以帮助你。

编辑:

可以使用的标志(在应用程序委托声明),并设置根据所选择的细胞中didSelectRowAtIndexPath方法方法的标记。

现在在PickerView的viewDidLoad上,你可以检查相同的标志,让你知道哪个单元被点击。

希望这可以帮助你。

EDIT-1

可以只使用NSUserDefaults的如图..

对于小区1

[[NSUserDefaults standardUserDefaults] setValue:@"Cell-1" forKey:@"CELLSELECTED"]; 

用于细胞2:

[[NSUserDefaults standardUserDefaults] setValue:@"Cell-2" forKey:@"CELLSELECTED"]; 

对于Cell-3:

[[NSUserDefaults standardUserDefaults] setValue:@"Cell-3" forKey:@"CELLSELECTED"]; 

等等..

希望这有助于你现在

+0

但我应该在哪里写条件语句在pickerView?如果在viewdidload我会写,那么我怎么得到哪个表单元格被点击? – DShah

+0

@DShah:请检查我的答案的**编辑**部分。 –

+0

是的,这是解决方案和显而易见的方式之一...但是,我有10行,已经有这么多的变量,所以我没有选择这个解决方案。如果我能够得到setHidden Property的工作,那么它会使我的代码看起来不错.. :)和ofcourse我可以放松使用10 bool值... – DShah

0

我不得不使用偏好设置屏幕上通用的笔尖文件的这个绝妙的主意,所以我有一个“开关笔尖”,一个“文本字段笔尖”,以及“文本笔尖” 。我将这些控件分配在cellForRowAtIndexPath中以编程方式查看控制器属性。然而,这最终因某种神秘原因而不起作用。

我最终为每个单元设计了一个自定义笔尖。有用。然后,在cellForRowAtIndexPath我必须确定哪个单元格被加载,将控件初始化为适当的值。

+0

所以你的意思是我应该在didSelect或cellForRowAtIndexPath方法上创建控件?或者你想让我为所有单元格创建不同的笔尖? – DShah

相关问题