Вызов IBAction программно в TableViewHeader - PullRequest
1 голос
/ 15 сентября 2011

Я создаю кнопку программно в своей ячейке заголовка TableView и добавляю в нее действие TouchUpInside. С UIButton Header также содержит две другие метки UIL.

Проблема: если кнопка добавлена ​​как SubView, она не отвечает.

Но когда я возвращаю только метод UIButton, метод работает нормально.

Вот мой код - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{


UIView *viewHeader = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 60)];

viewHeader.tag = 101;

viewHeader.backgroundColor = [UIColor cyanColor];


UIButton *btnBack = [UIButton buttonWithType:UIButtonTypeRoundedRect];

btnBack.frame = CGRectMake(15, 15, 50, 25);

//btnBack.titleLabel.text = @"Back";
[btnBack setTitle:@"Back" forState:UIControlStateNormal];

[btnBack addTarget:self action:@selector(Back:) forControlEvents:UIControlEventTouchUpInside];
btnBack.userInteractionEnabled = YES;

UILabel *lblPlayerName = [[UILabel alloc]initWithFrame:CGRectMake(75, 20, 60, 20)];
lblPlayerName.backgroundColor = [UIColor redColor];

UILabel *lblHighScoreOfPlayer = [[UILabel alloc]initWithFrame:CGRectMake(215, 20, 80, 20)];
lblHighScoreOfPlayer.backgroundColor = [UIColor yellowColor];


}
lblPlayerName.text = [@"Name" uppercaseString];

lblHighScoreOfPlayer.text = [@"Scores" uppercaseString];

[viewHeader addSubview:btnBack];    
[viewHeader addSubview:lblPlayerName];
[viewHeader addSubview:lblHighScoreOfPlayer];

return viewHeader;


}

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

Сначала вы добавляете вид изображения как подвид uiview для вида заголовка вместо UIView *viewHeader = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 60)];

Процедура должна быть в следующем порядке.

step1.allocate UIView шаг 2: добавить imageView как подвид uiView Шаг 3: добавить кнопку в качестве подпредставления изображения. затем верните uiview

Это рабочий код, который я тестировал.

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{
    UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)] autorelease];
    UIButton *btnBack = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    btnBack.frame = CGRectMake(15, 15, 50, 25);


    [btnBack setTitle:@"Back" forState:UIControlStateNormal];

    [btnBack addTarget:self action:@selector(Back:) forControlEvents:UIControlEventTouchUpInside];
    btnBack.userInteractionEnabled = YES;

    [headerView addSubview: btnBack];
    return headerView;
}
0 голосов
/ 15 сентября 2011

Я не уверен, но, вероятно, вам следует установить свойство userInteractionEnabled для вашего основного UIView viewHeader.userInteractionEnabled = YES;.

И, как уже упоминалось, @ott попытаться выделить UIView, а не UIImageView для viewHeader:

UIView *viewHeader = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 60)];

Попробуйте.Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...