如何从iphone中的ScrollView子视图(UILabel)中获取值

时间:2011-03-17 11:12:13

标签: iphone objective-c cocoa-touch uiscrollview uilabel

我添加了10个标签(标签包含一些数据)到scrollview。我想获取特定位置的标签值。你能告诉我如何获得该位置的值。请给出建议,这是代码我写的。如何获得用户选择的语言的价值

-(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;
  NSMutableArray *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)];

}

谢谢,

吉里什

2 个答案:

答案 0 :(得分:2)

有人必须设定这些价值观,不是吗? :)当你必须知道标签时,为什么要问标签的价值呢?

编辑:看到你的代码,你可能会从滚动视图的contentOffset中找出答案,但看起来你最好使用UIPicker或{{1}所有这些基础设施都是免费提供的

答案 1 :(得分:1)

UILabel不是互动组件Girish。所以你不能得到它的选择事件。更好地使用UIButtons。 我编辑了你的代码并添加了一个方法。只需使languageArray全局化,代码就可以正常工作。

-(void)youMethod
{
    //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;
    NSMutableArray *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 )];
         UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
         btn.frame = CGRectMake(0, y ,90,30 );
         btn.tag = languagValue;
         [btn addTarget:self action:@selector(languageSelected:) forControlEvents:UIControlEventTouchUpInside];
         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:btn];
         //  [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)];

}

-(void)languageSelected:(id)sender
{
    UIButton * btn = (UIButton*)sender;
    int selectedIndex = btn.tag;
    NSString * selectedLanguage = [languageArray objectAtIndex:selectedIndex];
}