Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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
Objective c 如何在Superview中插入视图';你的观点是什么?(iOS)_Objective C_Ios_Subview_Superview_Uiview Hierarchy - Fatal编程技术网

Objective c 如何在Superview中插入视图';你的观点是什么?(iOS)

Objective c 如何在Superview中插入视图';你的观点是什么?(iOS),objective-c,ios,subview,superview,uiview-hierarchy,Objective C,Ios,Subview,Superview,Uiview Hierarchy,我有下面的代码行。。。如何修改它以将子视图插入名为“foo”的superview视图中 [[self superview] addSubview:copy3]; 有不止一种方法可以做到这一点- 1.在代码中有一个IBOutlet参考。这是从xcode接口生成器创建的。一旦你有了这个,它就相当直接了- [iboutlet_foo_object addSubview:copy3]; 2.标记您感兴趣的视图。同样,可以从xcode Interface builder或代码中标记视图。在此之后— F

我有下面的代码行。。。如何修改它以将子视图插入名为“foo”的superview视图中

[[self superview] addSubview:copy3];

有不止一种方法可以做到这一点-

1.在代码中有一个
IBOutlet
参考。这是从xcode接口生成器创建的。一旦你有了这个,它就相当直接了-

[iboutlet_foo_object addSubview:copy3];
2.
标记您感兴趣的视图。同样,可以从xcode Interface builder或代码中标记视图。在此之后—

Foo *fooObj = [[self superview] viewWithTag:tagInt];
[fooObj addSubview:copy3];
3.最后,您可以遍历superview中的所有视图&查看哪一个属于
Foo
-

NSArray *subviews = [[self superview] subviews];
for(UIView *v in subviews)
{
    if(v isKindOfClass:[Foo class])
    {
        [v addSubview:copy3];
        break;
    }
}

希望这些方法能帮助您……

首先将myView变成superview的一个属性 然后使用

[[[self superview] myView] addSubview:mySubview];

首先用唯一的编号标记视图myView:

myView.tag = 0x1234;
然后,您可以使用viewWithTag找到它:

[[[self superview] viewWithTag:0x1234] addSubview:mySubview];

实际上,您可以将其添加到“视图”而不是“超级视图”

[[self view] addSubview:mySubview];
每当我将子视图添加到父视图时,它对我来说都很好。
如果出现问题,请告诉我。

如果您使用的是故事板,并且superview和您的视图位于同一视图控制器的视图中,您可以定义一个插座并引用它。您所说的“命名的foo”是什么意思?视图没有name属性,您是否有名为foo的ivar?我想代码应该是这样的“[[self superview].foo addSubview:copy3];方法不正确。让视图控制器或至少是superview管理插入视图的位置。嗯……它无法使用您的方法识别其他视图控制器中的视图。您需要在新的视图控制器中对其进行引用。首先创建
foo
类的空实例。然后尝试从y复制
foo
的引用我们的旧ViewController到您的newViewController.foo不是一个类…它是一个在父视图中声明的uiview它说找不到实例方法…知道为什么吗?编辑:看起来其他人的答案是有效的。确定:),您应该将myView int作为视图超级视图classI中的@属性添加myView作为@属性。m是什么意思yView int?抱歉,类型,你@synthesis了吗?好吧,这样它就不再将子视图广告到它原来的视图中了…但它现在根本没有添加它。可能是因为它找不到带有我设置的标记的视图,即使我在superview中设置了标记。你知道为什么它找不到它吗?