使用viewWithTag函数在UITableViewController中找到特定的内容视图

时间:2014-12-07 20:12:18

标签: ios uitableview

我需要在表格视图中找到特定的内容视图。 该表视图由UITableViewController驱动,该控件用于向我的用户显示他可以在我的应用程序中更改的一些参数。 对于其中一个单元格,我需要以编程方式添加一个UITextView,我有子类(NSTextStorage)来更改文本属性,具有丰富的文本编辑等等。 所以我需要通过调用我的.addSubview找到特定的单元格(内容视图)。我认为你就像在这个视图中添加一个特定的标签一样简单,稍后在我的viewDidLoad中调用.viewWithTag。问题是一个零!?!

这是小代码片段和我的表层次结构的捕获

override func viewDidLoad() {
    super.viewDidLoad()

    let specific = self.view.viewWithTag(99) //--> Return nil
    let specific2 = self.tableView.viewWithTag(99) //--> Also nil

enter image description here

我做错了什么或者我错过了什么?这是我第一次尝试这种方法(viewWithTag),也许还有其他我需要做的事情?

THX!

2 个答案:

答案 0 :(得分:0)

您无法在viewDidLoad上调用此内容,因为您使用的是UITableView,所有这些单元格只会在方法上加载 AFTER viewDidLoad tableView:cellForRowAtIndexPath:

因此,如果您想在Cell上插入任何内容,则必须使用tableView:cellForRowAtIndexPath:来执行此操作。

我不确定viewWithTag是否适用于TableView,但你不应该这样做。要获取特定Cell的View(在我上面说的方法加载之后),您可以调用以下方法:

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[[NSIndexPath indexPathForRow:0 inSection:0]];

答案 1 :(得分:0)

经过大量搜索,我决定使用容器视图。 所以我将UIContainerView控件放在我的单元格中。这会为自定义视图创建一个嵌入segue。

enter image description here

在此视图中,a可以覆盖viewDidLoad并加载我的自定义UITextView控件......

class CustomView: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    // ... code of my super class UITextView with my custom NSTextStorage

    self.view.addSubview(specialTextBox)
}

所以现在它有效! : - )