2011-09-17 83 views
0

我想添加一串UIButton到水平UIScrollView使用下面的代碼,但是我沒有看到任何東西,我看到的只是一個白色的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的釋放一次過於頻繁。它被創建自動釋放,然後添加到滾動視圖,然後釋放,這意味着當autorelease池結束時它將被釋放。實際上,我很驚訝這不會崩潰。您是否使用自動引用計數?
  • 是self.scrollview正確初始化?如果它是零,它只會失敗而已。
  • 是真正加載和可用的「bebas」字體嗎?自定義字體加載在iOS上並不是那麼簡單。

另外:

  • 您沒有使用實際的按鍵的字體來衡量的標籤尺寸。 (「bebas」vs「ArialMT」)
  • 你可能在第1行有泄漏。那NSArray最好是自動釋放(使用[NSArray arrayWithObjects:...])。
  • autoresizingMask不是BOOL值,它是標誌的或組合。
+0

是的問題是在這裏發佈..我沒有注意到它是autoreleased ..謝謝 – adit