2012-07-04 2 views
0

У меня есть представление, которое содержит пару подзонов, на каждом из этих подзонов есть прозрачная кнопка на нем. Я помещаю эти представления в свой основной UIView в цикле for, в этом цикле я также назначаю цель и действие для свойства кнопки subviews. Моя проблема в том, что работает только первый вид и кнопка, созданная в цикле (т. Е. Ее действие вызывается при нажатии на нее).iOS addTarget: действие: forControlEvents работает только для одной из моих кнопок при назначении для цикла

Соответствующая часть цикла выглядит следующим образом:

// _categories is an array 
for (int i = 0; i < _categories.count; i++) { 

    [...] 

    Category *category = [_categories objectAtIndex:i]; 
    CategoryView *categoryView = [[CategoryView alloc] initWithFrame:categoryRect andTitle:category.name]; 
    [...] 

    categoryView.categoryButton.tag = [category.categoryId intValue]; 
    [categoryView.categoryButton addTarget:self action:@selector(openCategoryWithId:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:categoryView]; 

    [...] 
} 

Действие выглядит следующим образом:

- (void)openCategoryWithId:(UIButton *)sender 
{ 
    // Only gets called when I click on the first views button. 
    NSLog(@"Hello"); 
} 

Я попытался создать сильное свойство для подвида, но Didn» t помочь.

Любые идеи о том, что я должен делать?

+0

Если вы измените кнопки, чтобы они не были прозрачными, они выглядят правильно? Они могут все накладываться друг на друга, потому что 'categoryRect' не устанавливается должным образом (мы не можем видеть, где это установлено в предоставленном коде.) –

+0

@Paul спасибо, вы были правы. Их позиция была совершенно неправильной в категорииView. Они не накапливались, но ваше предположение было правильным. Добавьте его в качестве ответа, и я могу отметить его как правильное. – Anders

ответ

1

Похоже, что кнопки не были правильно установлены из-за categoryRect.

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