2013-04-28 5 views
2

Я добавляю UISegmentedControl под ногу сгруппированного UITableView программно. Он отображается хорошо, но когда я нажимаю на любой из вариантов, они не выделяются. Что я здесь делаю неправильно? Кроме того, как установить выделенный элемент по умолчанию?UISegmentedControl не отвечает

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // set up cacheControl 
    NSArray* cacheDays = [NSArray arrayWithObjects: @"1", @"2", @"3", @"4", @"5", nil]; 
    self.cacheControl = [[UISegmentedControl alloc] initWithItems:cacheDays]; 
    [self.cacheControl setTintColor:[UIColor blackColor]]; 
    [self.cacheControl addTarget:self action:@selector(cacheSelection:) forControlEvents:UIControlEventValueChanged]; 
    self.cacheControl.frame = CGRectMake(10, 16, self.tbl.frame.size.width-20, 47); 
    [self.cacheControl setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin]; 

} 

- (UIView *)tableView:(UITableView *)tv viewForFooterInSection:(NSInteger)section 
{ 
    switch (section) { 
     case 0:{ 
      UIView* footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tbl.frame.size.width, tbl.contentInset.top)]; 
      footerView.backgroundColor = [UIColor clearColor]; 
      return footerView; 
     } 
     case 1:{ 
      UIView* footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tbl.frame.size.width, 16)]; 
      footerView.backgroundColor = [UIColor clearColor]; 

      [footerView setClipsToBounds:NO]; 

      [footerView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin]; 
      [footerView addSubview:self.cacheControl]; 

      return footerView; 
     } 
    } 
    return nil; 
} 

Скриншот, в соответствии с просьбой:

Settings-screen

+0

Не могли бы вы разместить снимок экрана? – Undo

+0

Несомненно. Просто отредактирован. – hodgesmr

+0

Этот ответ из аналогичного вопроса исправил его для меня: http://stackoverflow.com/a/12436632/107821 – hodgesmr

ответ

0

Чтобы установить элемент по умолчанию, сделайте следующее: [cacheControl setSelectedSegmentIndex:0] с индексом, который вы хотите выбрали.

+0

Я задал два вопроса. Я нашел ответ на свой первый (я добавил комментарий), и это ответ на второй. – hodgesmr

0

Вы должны ввести -tableView:heightForFooterInSection: из протокола UITableViewDelegate.

Это позволит просматривать представление таблицы высотой нижнего колонтитула раздела, чтобы он соответствовал вашему представлению и позволял ему получать пользовательские взаимодействия.

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