ios - 通过标签动态查找 iOS UIView

标签 ios iphone uiview tags

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

我有一个 ScrollView ,我在其中动态创建其他 View 和 subview ,这是代码:

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];
}

现在,一切正常,当我单击 ImageView “like_mini”时,我可以在同一行中使用适当的标签找到其他 View

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

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

如果我在添加新 View 之前删除 ScrollView 中的所有 View ,它就可以工作。但我不想删除最旧的 View 。

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

希望我解释清楚了。

最佳答案

您好,图像向下移动的唯一原因是您没有分配正确的标签,请为 uiview、uiimageview 和 uitextview 赋予适当的标签值。

row_images_like.tag = [id_image intValue] + 1000;

要获取 View ,请按照与之前类似的方式完成它,只需向其中添加 1000。

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

还有一个错误:

number_like.tag = x;

上面的行对象即“Number_like”是如何在初始化之前出现并将其他对象的标签值更改为“+2000”和“+3000”

关于ios - 通过标签动态查找 iOS UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20742293/

相关文章:

ios - 了解 UILocalNotification 时区

ios - 解析iOS SDK : Setting up Cloud Code in Terminal

iphone - 将 C# 编译成 objective-C

iphone - 始终居中 UIView

iphone - 带有 UIButtonType 详细信息披露按钮的路由标记标签 - 按钮不可点击

ios - UIBezierPath bezierPathWithRect 内存泄漏

ios - 如何编写代码来读取.fla 文件?

iphone - 窃取应用程序并使用临时分发将其发布到 AppStore

iphone - 我的 Nib 无法加载

ios - 在 UITableViewCell 内动画 UILabel 文本更改