0

ScrollViewでボタンタグ1〜5を取得したいだけですが、他のデータを取得する必要はありません

(void)layoutScrollImages
{
    UIImageView *view = nil;
    NSArray *subviews = [weekscroll subviews];

    CGFloat curXLoc = 0;
    for (view in subviews)
    {
        if ([view isKindOfClass:[UIImageView class]] && view.tag > 0)
        {
            NSLog(@"%d",view.tag);
            CGRect frame = view.frame;
            frame.origin = CGPointMake(curXLoc, 0);
            view.frame = frame;
            curXLoc += (wScrollObjWidth);
        }   
    }
    NSLog(@"subviews = %@",subviews);
    [weekscroll setContentSize:CGSizeMake((wNumImages * wScrollObjWidth), [weekscroll bounds].size.height)];
}

    subviews = (
    "<UIImageView: 0x1ba330; frame = (313 61; 7 5); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x1bac00>>",
    "<UIImageView: 0x1bc900; frame = (315 59; 5 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x1bdde0>>",
    "<UIButton: 0x1bd380; frame = (0 1; 50 66); opaque = NO; layer = <CALayer: 0x1bd410>>",
    "<UIButton: 0x1bd690; frame = (50 0; 50 66); opaque = NO; layer = <CALayer: 0x1bd720>>",
    "<UIButton: 0x1bd9a0; frame = (100 0; 50 66); opaque = NO; layer = <CALayer: 0x1bda30>>",
    "<UIButton: 0x1bc570; frame = (150 0; 50 66); opaque = NO; layer = <CALayer: 0x1bc600>>",
    "<UIButton: 0x1beaa0; frame = (300 0; 50 66); opaque = NO; tag = 1; layer = <CALayer: 0x1beb30>>",
    "<UIButton: 0x1bff40; frame = (350 0; 50 66); opaque = NO; tag = 2; layer = <CALayer: 0x1c0920>>",
    "<UIButton: 0x1c0e60; frame = (400 0; 50 66); opaque = NO; tag = 3; layer = <CALayer: 0x1c0ef0>>",
    "<UIButton: 0x1c1430; frame = (450 0; 50 66); opaque = NO; tag = 4; layer = <CALayer: 0x1c14c0>>",
    "<UIButton: 0x1c1a00; frame = (500 0; 50 66); opaque = NO; tag = 5; layer = <CALayer: 0x1c1a90>>",

    "<UIButton: 0x1cb340; frame = (1800 0; 50 66); opaque = NO; layer = <CALayer: 0x1cb3d0>>",
"
)UIImageView: 0x1ba330; frame = (313 61; 7 5); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = 
4

2 に答える 2

1

印刷されたログによると、UIButtonのみがタグを持っており、サンプルコードではUIImageViewで作業しているため、要件に従って指定されたコードを使用します。

以下のようにコードを変更しました。チェックしてください。

for (id objView in subviews)
{
    if ([objView isKindOfClass:[UIImageView class]])
    {
        UIImageView *imgView = (UIImageView*) objView;
        if (imgView.tag > 0)
        {
            NSLog(@"%d",imgView.tag);
            CGRect frame = imgView.frame;
            frame.origin = CGPointMake(curXLoc, 0);
            imgView.frame = frame;
            curXLoc += (wScrollObjWidth);
        }
    }   
}

または、UIButtonのみを取得する場合は、

for (UIButton *btnView in subviews)
{
    if ([btnView isKindOfClass:[UIButton class]] && btnView.tag > 0)
    {
        NSLog(@"%d",btnView.tag);
        CGRect frame = btnView.frame;
        frame.origin = CGPointMake(curXLoc, 0);
        btnView.frame = frame;
        curXLoc += (wScrollObjWidth);
    }   
}
于 2012-04-26T06:43:27.203 に答える
0

タグが0より大きいボタンが必要な場合は、[UIImageViewクラス]をチェックするのはなぜですか。

タグが0より大きいボタンを見つけるための条件は次のとおりです。

if ([aView isKindOfClass:[UIButton class] && (aView.tag > 0)]) {
}
于 2012-04-26T06:42:11.767 に答える