2013-04-21 3 views
0

Итак, я задал этот вопрос раньше и получил несколько ответов, но все получилось очень грязным, поэтому я решил задать его здесь.Создание кнопок путем циклического перемещения по массиву

Я инициализация Scrollview здесь:

ScrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,480)]; 
ScrollView.showsVerticalScrollIndicator=YES; 
ScrollView.scrollEnabled=YES; 
ScrollView.bounces = YES; 
ScrollView.userInteractionEnabled=YES; 
[self.view addSubview:ScrollView]; 
ScrollView.contentSize = CGSizeMake(10500,480); 
[self.view addSubview:homeButton]; 

Я массивы для 44 кнопок, которые будут созданы, массивы содержат информацию об именах, имена файлов для фотографий, координату и т.д.

Я бегу это:

for (int i = 0; i < 44; i++) { 
    [self makeLabelsAndButtons:i]; 
    xPresCoord += 10; 
} 

В моей viewDidLoad

И это метод makeLabelsAndButtons:

-(void)makeLabelsAndButtons:(NSInteger)indexPath{ 

Button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[Button addTarget:self action:@selector(presPressed:) forControlEvents:UIControlEventTouchUpInside]; 
Button.frame = CGRectMake(160.0, 240.0, 220.0, [[numbers objectAtIndex:indexPath] integerValue]); 
Button.center = CGPointMake(xPresCoord, 200.0); 
[Button setBackgroundImage:[UIImage imageNamed:[picArray objectAtIndex:indexPath]] forState: UIControlStateNormal]; 
[self.ScrollView addSubview:Button]; 

Label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 32)]; 
Label.text = [nameArray objectAtIndex:indexPath]; 
Label.center = CGPointMake([[numbers objectAtIndex:indexPath] integerValue], 390); 
[Label setFont:[UIFont fontWithName:@"GurmukhiMN" size:27]]; 
Label.numberOfLines = 1; 
Label.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5f]; 
[Label sizeToFit]; 
Label.textColor= [UIColor whiteColor]; 
[ScrollView addSubview:Label]; 
//[ScrollView insertSubview:Label atIndex:1]; 

//NSLog(@"name: %@, pic:%@, picY:%i", nameString, picString, picNumb); 
for (UIView *subview in ScrollView.subviews) NSLog(@"View: %@", subview); 

} 

Последние NSLog показывает, что подвиды (метки и кнопки) не добавляются, но я понятия не имею, почему.

Button и этикетка определяются как:

UIButton *Button; 
UILabel *Label; 

В моей .h файле

Любая помощь приветствуется!

EDIT: Вот ссылка на другой вопрос

Creating buttons with an Array

+0

Я попробовал ваш код на другой день, и он работал нормально для меня. Является ли ScrollView non nil? Как вы объявляете кнопку? Являются ли они оба свойствами или иварами? – rdelmar

+0

ScrollView не равен нулю, ScrollView - это свойство и UIScrollView, которые я объявил в своем заголовке, и я знаю, что это работает, потому что у меня есть некоторые элементы в нем в построителе интерфейса, и они есть, поэтому я знаю, что представление существует. Кнопка определена как кнопка UIButton *; в моем заголовке – tyler53

+0

Могу ли я увидеть файлы .h и .m для кода, который вы использовали? посмотреть, что другое? – tyler53

ответ

0

Вот мой код,

#import "ViewController.h" 

@interface ViewController() 
@property (strong,nonatomic) UIScrollView *scrollView; 
@property (strong,nonatomic) NSArray *nameArray; 
@property (strong,nonatomic) NSArray *numbers; 
@property (strong,nonatomic) NSArray *picXCoords; 
@property (strong,nonatomic) NSArray *picArray; 
@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.nameArray = @[@"First",@"Second",@"Third"]; 
    self.numbers = @[@30,@50,@70]; 
    self.picXCoords = @[@160,@400,@700]; 
    self.picArray = @[@"back1.tiff", @"back2.tiff",@"Baldacci.tiff"]; 
    self.scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,480)]; 
    self.scrollView.showsVerticalScrollIndicator=YES; 
    self.scrollView.scrollEnabled=YES; 
    self.scrollView.bounces = YES; 
    self.scrollView.userInteractionEnabled=YES; 
    [self.view addSubview:self.scrollView]; 
    self.scrollView.contentSize = CGSizeMake(20000,480); 

    for (int i = 0; i < 3; i++) { 
     [self makeLabelsAndButtons:i]; 
    } 
} 

-(void)makeLabelsAndButtons:(NSInteger)indexPath{ 
    NSString *nameString = [self.nameArray objectAtIndex:indexPath]; 
    NSString *picString = [self.picArray objectAtIndex:indexPath]; 
    NSInteger picNumb = [[self.numbers objectAtIndex:indexPath] integerValue]; 
    NSInteger picXnum = [[self.picXCoords objectAtIndex:indexPath] integerValue]; 

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button addTarget:self action:@selector(presPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    button.frame = CGRectMake(160.0, 240.0, 220.0, picNumb); 
    button.center = CGPointMake(picXnum, 200.0); 
    [button setBackgroundImage:[UIImage imageNamed:picString] forState: UIControlStateNormal]; 
    [button setTitle:self.nameArray[indexPath] forState:UIControlStateNormal]; 
    [self.scrollView addSubview:button]; 
    NSLog(@"name: %@, picY:%i", nameString, picNumb); 

} 
+0

не работает для меня по какой-то причине:/ – tyler53

+0

Вы начали новый проект и ввели этот код? – rdelmar

+0

хорошо работает, когда я помещаю его в новый проект, но я не понимаю, почему он не работает в моем существующем – tyler53

Смежные вопросы