2014-06-13 5 views
0

У меня есть UITableView, и я хочу добавить кнопку прямо под стол. Таблица больше экрана, поэтому, чтобы перейти к кнопке, мне нужно прокрутить ее вниз. Проблема в том, что экран будет прокручиваться чуть выше, где находится кнопка. Поэтому я могу слегка перетащить экран, и кнопка видна, но когда я отпущу, экран возвращается, и я не могу добраться до кнопки.Добавление UIButton в UITableView, но не может прокручиваться до кнопки

Кнопка устанавливается следующим образом

for(int i = 0; i < [buttonArray count]; i++) 
    { 
     UIButton *but = [buttonArray objectAtIndex:i]; 
     float xPosition = but.frame.origin.x; 
     float xGap = (self.view.frame.size.width - (but.frame.size.width)*2)/3; 
     if ((i % 2 == 0) && (i < [buttonArray count] - 1)) 
     { 
      xPosition = xGap; 
     } 
     else if ((i % 2 == 1) && (i < [buttonArray count] - 1)) 
     { 
      xPosition = (xGap * 2) + but.frame.size.width; 
     } 
     else 
     { 
      xPosition = (self.view.frame.size.width - but.frame.size.width)/2; 
     } 
     //Add space between row of buttons 
     if(i > 0) 
     { 
      if(i % 2 == 0) 
      { 
       yPosition+=but.frame.size.height; 
       CGRect screenRect = [[tableView superview] bounds]; 

       //Add extra space between row of buttons 
       float fGap = (screenRect.size.height/100.0) * 4.5; 
       yPosition+=fGap; 
      } 
     } 
     CGRect rect = CGRectMake(xPosition, yPosition, but.frame.size.width, but.frame.size.height); 
     but.frame = rect; 
     [but addTarget:self action:@selector(genericMethod:) forControlEvents:UIControlEventTouchUpInside]; 

     CGRect screenRect = [self.view bounds]; 
     CGFloat fHeight = screenRect.size.height; 

     float fMargin = (fHeight/100.0) * 0.8; 

     but.titleEdgeInsets = UIEdgeInsetsMake(0, 0, fMargin, 0); 

     [tableView addSubview:but]; 
    } 
} 

так что я иду через массив кнопок (только одной кнопки в массиве в моем текущем случае) и установить рамки и поместите их в столбцы и добавить это как подпрограмма для tableView. Вещи, которые я пробовал:

  • Увеличить размер нижнего колонтитула стола. Это просто заставляет зазор между столом и кнопкой увеличиваться, и я до сих пор не могу прокрутить вниз до кнопки.
  • Добавить кнопку в нижний колонтитул. Это сработало. Я мог попасть к кнопке, но кнопка всегда была на экране, а не просто статична под столом.
  • Добавьте кнопку в отдельное представление под таблицей и добавьте этот вид в viewController.view. Это не сработало, и кнопка не отображалась.
  • Установите таблицуView.tableFooterView равным кнопке. Это также сработало, и я мог дойти до кнопки, но это не сработает, если в массиве выше более одной кнопки.
+0

Вы должны добавить кнопку табличного представления 'tableFooterView' вместо этого. – JoeFryer

+0

Я попытался сделать [tableView.tableFooterView addSubview: но], но кнопка не появляется на экране. – user1776555

+0

Возможно, вы должны добавить свой собственный 'UIView' в качестве фактического' tableFooterView', а затем добавить свою кнопку в качестве подпрограммы. – JoeFryer

ответ

0

Вы должны создать собственное представление. Внутри этого представления вы должны добавить все кнопки, созданные с помощью buttonArray. Теперь назначьте это настраиваемое представление tableFooterView.

UIView *customView = [[UIView alloc] initWithFrame:properFrame]; 
for(int i = 0; i < [buttonArray count]; i++) 
{ 
     //...calculation of frame and other stuff 
     [customView addSubview:but]; 
} 
tableView.tableFooterView = customView; 

Это должно решить вашу проблему прокрутки.

+0

Спасибо за это. Я попробовал, и это позволяет мне прокручивать дальше, но, к сожалению, кнопка не появляется на экране, когда я делаю это так. У вас есть идеи, почему это может быть? – user1776555

+0

Вы отрегулировали рамку кнопки, учитывая, что теперь вы добавляете ее в качестве поднабора таблицыFooterView, а не tableView? – JoeFryer

+0

Да, в качестве теста я установил фрейм, чтобы иметь x = 0 и y = 0, но сохраним его первоначальный размер. Это должно положить его в верхний левый угол таблицыFooterView, правильно? – user1776555

0
  • Если вы хотите сделать вид снизу стабильным, возьмите UIView внизу UITableView.
  • Если вы будете использовать TableFooterView, оно будет в конце ячейки. View

XIB

+0

Спасибо. Я бы хотел, чтобы UIButton всегда находился под UITableView. Я могу добавить представление так, чтобы оно было статичным и всегда на экране, но я не могу его добавить, так что кнопка всегда находится под таблицей, и вам нужно прокручивать ее за столом, чтобы просмотреть ее. Я добавил пользовательский вид в нижней части UITableView, но, к сожалению, кнопка не появляется на экране, когда я это делаю. – user1776555

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