通过标签动态查找iOS UIView



我正在为iPhone开发一个应用程序,遇到了一个奇怪的问题。我试着自己解决这个问题,但三天后我还是没有找到解决方案。

我有一个滚动视图,在其中我动态地创建其他视图和子视图,这是代码:

for (int i=0; i<dim; i++) {
UITextView *posted_nick= [[UITextView alloc] initWithFrame:CGRectMake(paddWidth, heightUpdateImageScrollview+paddHeight/2, screenWidth-2*paddWidth, 37)];
//textview customization...
[imagesScrollView addSubview:posted_nick];
row_images_like = [[UIView alloc] initWithFrame:CGRectMake(paddWidth,heightUpdateImageScrollview+paddHeight+37+heightImageInScrollView,screenWidth-2*paddWidth,80)];
//set the tag = id
row_images_like.tag = [id_image intValue];
UIImageView *like_mini = [[UIImageView alloc] initWithFrame:CGRectMake(0,15,25,25)];
//imageview customization...
//tag = id+1..
NSInteger x = [id_image intValue] + 1;
number_like.tag = x;
[row_images_like addSubview:like_mini];
UITextView *number_like = [[UITextView alloc] initWithFrame:CGRectMake(paddWidth*5/2,10,55,37)];
//textview customization...
//tag = id+2..
NSInteger x = [id_image intValue] + 2;
number_like.tag = x;
[row_images_like addSubview:number_like];
[imagesScrollView addSubview:row_images_like];
}

现在,一切都很好,当我点击图像视图"like_mini"时,我可以在同一行中找到带有适当标签的其他视图

(UIView *thisView = (UIView*)[imagesScrollView viewWithTag:ID_IMAGE];)

问题是我在哪里更新滚动视图。当用户滚动到顶部时,如果有新的图像要显示,我会调用创建视图的相同函数,所有其他视图(已经存在)都会向下移动一些。为什么,当我试图在滚动视图中通过标记找到视图时,所有视图都在第一时间起作用,但不适用于使用相同代码创建的新图像?

如果我删除滚动视图中的所有视图,在添加新视图之前,它是有效的。但我不想删除最古老的视图。

当它工作时,我在控制台中有一个带有标记的视图(row_images_like)。当它不起作用时,我会收到一个_UITextContainerView。这是什么?

希望我解释了自己。

嗨,图像下移的唯一原因是您没有分配正确的标记,请为uiview、uiimageview和uitextview指定适当的标记值。

row_images_like.tag = [id_image intValue] + 1000;

对于获取视图,请像以前一样完成操作,只需向其添加1000。

UIView *thisView = (UIView*)[imagesScrollView viewWithTag:ID_IMAGE+1000];

还有一个错误:

number_like.tag = x;

在初始化上面的行对象(即"Number_like")并将其他对象的标记值更改为"+2000"one_answers"+3000"之前,它是如何出现的

在再次加载滚动视图之前,尝试删除添加到滚动视图的所有视图在上面为循环写下这一行

for (UIView *v in [imagesScrollView subviews])
{
[v removeFromSuperview];
v = nil;
}

最新更新