【问题标题】:Can we use initWithNibName to reuse same .xib file with different views?我们可以使用 initWithNibName 来重用具有不同视图的相同 .xib 文件吗?
【发布时间】:2011-11-21 19:08:09
【问题描述】:

我有一个包含 8 个项目(静态)的 UITableView。现在,当我单击 8 个单元格中的每一个时,每个单元格都包含 1 个单个控件。

例如:

  1. 单击单元格 1:使用 UIPickerView 的新视图。

  2. 单击单元格 2:使用 UIDatePicker 的另一个视图

  3. 单击单元格 3:使用 UITextField 的另一个视图。 . ...等等。

我可以只使用一个包含所有控件的 .xib 文件,但是当我单击该单元格时,只有该控件可见,而所有其他控件都隐藏。

我还希望这些控件值应该返回到表格单元格的 detailText。

如何重复使用一个 .xib 文件?我可以用不同的 nib 名称调用 xib 文件并签入 initwithnibname 方法吗??

请你给我一个很好的例子......

【问题讨论】:

  • 您可以在单个 xib 中拥有所有控件,并根据单元格选择显示/隐藏。
  • 但是我怎样才能确定在 DetailView 中设置了哪个值?假设单击单元格 1 设置表中的选取器值。单击单元格 2,日期已设置?等等

标签: iphone objective-c ios nib init


【解决方案1】:

基本上,我发现的唯一方法是设置条件语句,在其中只显示特定条件下的某些控件,并隐藏其他控件以及类似的其他条件。

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

希望对你有所帮助。

编辑:

您可以使用标志(在应用程序委托中声明)并根据所选单元格在 didSelectRowAtIndexPath 方法中设置标志。

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

希望对你有所帮助。

EDIT-1

您可以只使用如图所示的 NSUserDefaults..

对于单元格 1

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

对于单元格 2:

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

对于单元格 3:

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

等等..

希望现在对你有帮助

【讨论】:

  • 但是我应该在pickerView的哪里写条件语句?如果在 viewdidload 中我会写,那么我怎样才能得到点击了哪个表格单元格???
  • @DShah:请检查我回答的 EDIT 部分。
  • 是的,这是解决方案之一,也是显而易见的方法......但是我有 10 行并且已经有很多变量,所以我没有选择这个解决方案。如果我能够让 setHidden 属性正常工作,那么它将使我的代码看起来不错.. :) 当然我可以放松使用 10 个布尔值...
  • @DShah:好的,你不需要 10 个布尔标志。你只需要一个 NSUserDerfaults 值就可以让它工作。检查我上面的代码。
  • 最后,无论我使用变量还是用户默认值,事情都是一样的。用户默认设置使我免于许多变量,这很好。但是我的主要问题仍然存在,因为为什么我无法获得 setHidden 工作,尽管我将 setHidden 作为 intellisense 菜单中的属性..???
【解决方案2】:

我有一个在 Prefs 屏幕上使用通用 nib 文件的绝妙主意,所以我有一个“切换 nib”、一个“文本字段 nib”和一个“文本 nib”。我在cellForRowAtIndexPath 中以编程方式分配控件来查看控制器属性。但是,由于某种神秘的原因,这最终无法正常工作。

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

【讨论】:

  • 所以你的意思是我应该在 didSelect 或 cellForRowAtIndexPath 方法上创建控件??或者你想让我为所有单元格创建不同的笔尖???
猜你喜欢
  • 2018-12-31
  • 2016-11-23
  • 2018-12-22
  • 1970-01-01
  • 2021-02-16
  • 1970-01-01
  • 2021-03-12
  • 2010-11-07
  • 1970-01-01
相关资源
最近更新 更多