Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios viewWithTag在子视图控制器中始终返回nil_Ios_Null_Childviewcontroller_Viewwithtag - Fatal编程技术网

Ios viewWithTag在子视图控制器中始终返回nil

Ios viewWithTag在子视图控制器中始终返回nil,ios,null,childviewcontroller,viewwithtag,Ios,Null,Childviewcontroller,Viewwithtag,我使用[self.view viewWithTag]来引用UIViewController中的对象。然后,我继续将特定的子视图移动到新的UIViewController,然后将其添加为子视图控制器,并将视图添加为子视图。但是,现在我无法在子视图控制器中使用viewWithTag来访问不同的对象。每次使用viewWithTag检索的对象都是nil 我不认为我使用viewWithTag不当,因为在我将该视图移动到新的视图控制器之前,它工作正常。一种解决方案是使用viewWithTag为我引用的每个视

我使用
[self.view viewWithTag]
来引用UIViewController中的对象。然后,我继续将特定的子视图移动到新的UIViewController,然后将其添加为子视图控制器,并将视图添加为子视图。但是,现在我无法在子视图控制器中使用
viewWithTag
来访问不同的对象。每次使用
viewWithTag
检索的对象都是nil

我不认为我使用viewWithTag不当,因为在我将该视图移动到新的视图控制器之前,它工作正常。一种解决方案是使用
viewWithTag
为我引用的每个视图创建属性,但我认为这不是一种好方法。有更好的解决办法吗?为什么会这样

根据请求编辑:

以下是如何添加子视图控制器:

self.runeTable = [RuneTableViewController new];
[self addChildViewController:self.runeTable];
self.runeTable.view.frame = CGRectMake(screenshotWidth + 32, navBarHeight, self.view.frame.size.width-screenshotWidth-32.0, self.view.frame.size.height-navBarHeight);
[self.view addSubview:self.runeTable.view];
以下是创建按钮的代码:

UIButton *updateButton = [UIButton buttonWithType:UIButtonTypeCustom];
updateButton.tag = 5;
[updateButton setTitleColor:HIGHLIGHT_COLOR forState:UIControlStateNormal];
[updateButton.titleLabel setFont:FONT_MED_LARGE_BOLD];
[updateButton setTitle:@"Update" forState:UIControlStateNormal];
updateButton.frame = CGRectMake(283, 280-60, 100, 60);
[detailInnerView addSubview:updateButton];
在这里,我尝试用其他方法检索并向该按钮添加一个目标:

UIButton *updateButton = (UIButton *)[self.view viewWithTag:5];
[updateButton addTarget:self action:@selector(updateCurrentDictionaryWithRuneInfo) forControlEvents:UIControlEventTouchUpInside];

当我添加断点和更新按钮时,它返回为nil。视图控制器中的其他UI元素也发生了同样的事情,我也尝试以这种方式检索这些元素。

我找到了答案<代码>更新按钮添加到另一个UIView,该UIView添加到父视图控制器。因此,为了检索updateButton,我应该使用
[self.parentViewController.view-withtag:5]
而不是
[self.view-withtag:5]

一些代码显示您在何处以及如何添加子视图控制器,以及如何尝试获取所需的视图,这些代码将非常有用。当然,我会添加这些代码。在此上下文中,
UIButton*updateButton=(UIButton*)[self.view viewWithTag:5]是什么
po self
返回子视图控制器的实例,
RuneTableViewController