如何解决UIscrollview中带标签的问题

发布于 2024-10-23 21:09:04 字数 2891 浏览 4 评论 0原文

我正在 UIscrollView 上做一个小概念。我在滚动视图(语言)上附加了 10 个标签,并且我想从用户选择的标签中检索标签值。此代码正在执行并运行。但有时它会终止,没有任何异常/错误。

注意:我有一个疑问,即屏幕第一次出现时。如果我按滚动视图向上按钮。滚动视图中的标签将移动到最后一个标签。如果我按向下按钮,则它会移动第一个标签。它只在它向上/向下移动之后第一次发生,

任何人都可以帮助解决这个问题......

    -(void)printLanguage
    {
    NSLog(@"in print language method");

    //int y=0;
    //NSMutableArray *languageArray=[[NSMutableArray alloc]initWithObjects:@"Chinese",@"Spanish",@"English",@"Arabic",@"Hindi",@"Bengali",@"Portuguese",@"Russian",@"Japanese",@"German",nil];
    //UILabel *languageLabel=[[UILabel alloc]initWithFrame:CGRectMake(0, y ,90,30 )];

    languagValue=0;

    int y=0;
    languageArray=[[NSMutableArray alloc]initWithObjects:@"Chinese",@"Spanish",@"English",@"Arabic",@"Hindi",@"Bengali",@"Portuguese",@"Russian",@"Japanese",@"German",nil]; 


    for(languagValue=0;languagValue<[languageArray count];languagValue++)
    {
        UILabel *languageLabel=[[UILabel alloc]initWithFrame:CGRectMake(0, y ,90,30 )];
        NSLog(@"array count is @%d",[languageArray count]);
        languageLabel.text=[languageArray objectAtIndex:languagValue];
        NSLog(@"array objectat index is @%@",[languageArray objectAtIndex:languagValue]);
        languageLabel.font=[UIFont systemFontOfSize:19.0];
        languageLabel.backgroundColor=[UIColor clearColor];
        [languageScrollView addSubview:languageLabel];
        //  [languageScrollView addSubview:languageLabel];
        //y+=90;        
        y+=languageLabel.frame.size.height;
        [languageLabel release];

    }   
                            [languageScrollView setShowsHorizontalScrollIndicator:NO];
                            [languageScrollView setShowsVerticalScrollIndicator:NO];

                            [languageScrollView setContentSize:CGSizeMake(genderScrollView.frame.size.width, y)];   
         }


    -(IBAction)languageDownButton:(id)sender
    {
    NSLog(@"language scroll view  up button pressed");

    languagValue-=1;

    NSLog(@"value of language value is @%d",languagValue);
    if(!(languagValue>0))
    {
        languagValue=0; 

    }
    else if(!(languagValue<10))
    {
        languagValue=9;
    }
    else {
        NSLog(@"gender value*24 is @%d",(languagValue)*30);

         [languageScrollView setContentOffset:CGPointMake(0, (languagValue)*30) animated:YES];


    }       
}


    -(IBAction)languageUpButton:(id)sender
    {

    NSLog(@"language scroll view down button pressed");
        NSLog(@"value of language value is @%d",languagValue);
    languagValue+=1;

    if(!(languagValue>0))
    {
        languagValue=0; 

    }
    else if(!(languagValue<10))
    {
        languagValue=9;
    }
    else {
        NSLog(@"gender value*24 is @%d",(languagValue)*30);

        [languageScrollView setContentOffset:CGPointMake(0, (languagValue)*30)   animated:YES];


    }
}

i am doing a small concept on UIscrollView . i attached 10 labels to the scrollview(languages)and i want to retrieve the label value from the label what the user have selected.this code is executing and running .but some time it is terminating with out any exception/error.

Note:i am having doubt one that is when the first time the screen appears .if i press the scrollview up button .The label in the scroll view is moving to last label.if i press the down button than it is moving first label.it is happening only for first time after that it is moving for one up/down

can any one help in solving this problem...

    -(void)printLanguage
    {
    NSLog(@"in print language method");

    //int y=0;
    //NSMutableArray *languageArray=[[NSMutableArray alloc]initWithObjects:@"Chinese",@"Spanish",@"English",@"Arabic",@"Hindi",@"Bengali",@"Portuguese",@"Russian",@"Japanese",@"German",nil];
    //UILabel *languageLabel=[[UILabel alloc]initWithFrame:CGRectMake(0, y ,90,30 )];

    languagValue=0;

    int y=0;
    languageArray=[[NSMutableArray alloc]initWithObjects:@"Chinese",@"Spanish",@"English",@"Arabic",@"Hindi",@"Bengali",@"Portuguese",@"Russian",@"Japanese",@"German",nil]; 


    for(languagValue=0;languagValue<[languageArray count];languagValue++)
    {
        UILabel *languageLabel=[[UILabel alloc]initWithFrame:CGRectMake(0, y ,90,30 )];
        NSLog(@"array count is @%d",[languageArray count]);
        languageLabel.text=[languageArray objectAtIndex:languagValue];
        NSLog(@"array objectat index is @%@",[languageArray objectAtIndex:languagValue]);
        languageLabel.font=[UIFont systemFontOfSize:19.0];
        languageLabel.backgroundColor=[UIColor clearColor];
        [languageScrollView addSubview:languageLabel];
        //  [languageScrollView addSubview:languageLabel];
        //y+=90;        
        y+=languageLabel.frame.size.height;
        [languageLabel release];

    }   
                            [languageScrollView setShowsHorizontalScrollIndicator:NO];
                            [languageScrollView setShowsVerticalScrollIndicator:NO];

                            [languageScrollView setContentSize:CGSizeMake(genderScrollView.frame.size.width, y)];   
         }


    -(IBAction)languageDownButton:(id)sender
    {
    NSLog(@"language scroll view  up button pressed");

    languagValue-=1;

    NSLog(@"value of language value is @%d",languagValue);
    if(!(languagValue>0))
    {
        languagValue=0; 

    }
    else if(!(languagValue<10))
    {
        languagValue=9;
    }
    else {
        NSLog(@"gender value*24 is @%d",(languagValue)*30);

         [languageScrollView setContentOffset:CGPointMake(0, (languagValue)*30) animated:YES];


    }       
}


    -(IBAction)languageUpButton:(id)sender
    {

    NSLog(@"language scroll view down button pressed");
        NSLog(@"value of language value is @%d",languagValue);
    languagValue+=1;

    if(!(languagValue>0))
    {
        languagValue=0; 

    }
    else if(!(languagValue<10))
    {
        languagValue=9;
    }
    else {
        NSLog(@"gender value*24 is @%d",(languagValue)*30);

        [languageScrollView setContentOffset:CGPointMake(0, (languagValue)*30)   animated:YES];


    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不奢求什么 2024-10-30 21:09:04

为此,您最好使用 UITableView,通过其委托方法,您可以轻松显示语言数组。
为了获取所选语言,将使用此委托方法。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

请参阅文档。
http://developer.apple.com/库/ios/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html

You should better use UITableView for this, with its delegate methods you can easily display your language array.
and for geting the selected language,this delegate method will be used.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

see the documentation.
http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文