2011-09-17 14 views
0

次のコードを使用して、水平UIScrollViewにUIButtonの束を追加しようとしていますが、何も表示されず、白いUIScrollBarだけが表示されます。どうしてこれなの?私はそれがちょうどうまく動作する前に何かを台無しにしたことをかなり確信しています。UIScrollViewにUIButtonを追加する問題

self.category = [[NSArray alloc]initWithObjects:@"ALL", @"FOOD",@"NIGHT LIFE",@"ARTS & ENTERTAINMENT",@"SPORT", @"SHOP", @"COLLEGE & UNIVERSITY", @"TRAVEL SPOT", nil]; 
self.scrollView.delegate = self; 
    self.scrollView.scrollEnabled = YES; 
    self.scrollView.autoresizingMask = YES; 

    int xOffset = 0; 

    for(int index=0; index < [self.category count]; index++) 
    { 
     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [button.titleLabel setTextAlignment:UITextAlignmentCenter]; 
     [button setBackgroundImage:[UIImage imageNamed:@"CategoryTab.png"] forState:UIControlStateNormal]; 
     [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
     [button setTag:index]; 
     [button addTarget:self action:@selector(pressed:) forControlEvents:UIControlEventTouchUpInside]; 
     [button setTitle:[self.category objectAtIndex:index] forState:UIControlStateNormal]; 
     [button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; 
     [button.titleLabel setFont:[UIFont fontWithName:@"bebas" size:15.0]]; 
     CGSize maximumLabelSize = CGSizeMake(300,9999); 
     CGSize expectedLabelSize = [[self.category objectAtIndex:index] sizeWithFont:[UIFont fontWithName:@"ArialMT" size:15.0]      
             constrainedToSize:maximumLabelSize 
              lineBreakMode:UILineBreakModeWordWrap]; 
     [button setFrame: CGRectMake(xOffset, 0, expectedLabelSize.width + 30, 38)]; 
     [self.scrollView addSubview:button]; 
     xOffset += expectedLabelSize.width + 30; 
     [button release]; 
    } 
    self.scrollView.contentSize = CGSizeMake(xOffset, 38); 

答えて

0

いくつか考えられる原因:

  • UIButtonがあまりにも頻繁に一度リリースされます。オートレリースされて作成された後、スクロールビューに追加され、リリースされます。これは、オートレリープールが終了したときにデアロケーションされることを効果的に意味します。私はこれが実際にクラッシュしないのに驚いています。自動参照カウントを使用していますか?
  • はself.scrollviewが正しく初期化されていますか?それが無ければ、それは単に静かに失敗するでしょう。
  • は本当に読み込まれて利用可能な "bebas"フォントですか?カスタムフォントの読み込みは、iOSではそれほど簡単ではありません。また

  • あなたは、ラベルのサイズを測定するために、実際のボタンのフォントを使用していません。 ( "bebas"対 "ArialMT")
  • あなたはおそらく1行目にリークがあります。そのNSArrayは、より良いオートレリース([NSArray arrayWithObjects:...]を使用)する方が良いでしょう。
  • autoresizingMaskはBOOL値ではありません。これはORの組み合わせです。
+0

はい問題はここのリリースです。私はそれがオートリリースされたことに気付きませんでした。ありがとう – adit

関連する問題