Есть ли способ создать UITableView с одним универсальным нижним колонтитулом?

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

Возможна ли эта логика с использованием методов UITableViewDelegate? Или я должен создать собственное представление и просто попробовать добавить его в качестве подвида к моему табличному представлению? Нижний колонтитул, который у меня сейчас есть, содержит UIButton.

Если у кого-то есть пример кода, это было бы здорово.

Изменить: этот вопрос не совпадает с указанным. Я пытаюсь сделать универсальный нижний колонтитул, который плавает над UITableView. В другом вопросе не указывается расположение нижнего колонтитула, а только то, что нижний колонтитул желателен.


person Johnny Gamez    schedule 26.02.2013    source источник
comment
Что вы уже пробовали?   -  person Nathan White    schedule 26.02.2013
comment
Просто реализуйте tableView:titleForFooterInSection и игнорируйте параметр section.   -  person Matthias    schedule 26.02.2013
comment
Матиас, который будет ставить нижний колонтитул после каждого раздела.   -  person John    schedule 26.02.2013
comment
@NathanWhite - прямо сейчас я добавил представление, используя - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section   -  person Johnny Gamez    schedule 27.02.2013
comment
Я решил свою проблему и был бы рад поделиться кодом, но вопрос помечен как дубликат.   -  person Johnny Gamez    schedule 27.02.2013
comment
Вы все еще можете отредактировать свой вопрос, не так ли? Таким образом, вы можете включить свое решение в сам вопрос.   -  person tom redfern    schedule 27.02.2013
comment
@hugh - Да, я отредактировал вопрос, и они сняли с него пометку как дубликат. Я разместил решение ниже.   -  person Johnny Gamez    schedule 28.02.2013


Ответы (2)


прочитайте о свойстве tableFooterView UITableView.

А теперь немного кода: (используя ARC)

UILabel *footer = [UILabel alloc] init];
footer.text = @"Some text" ;
footer.backgroundColor = [UIColor greenColor];
self.tableView.tableFooterView = footer;

Теперь в нижней части всего табличного представления есть зеленый UILabel с текстом.

person John    schedule 26.02.2013
comment
Это почти то, что я ищу ... Я попробовал это, и он добавил нижний колонтитул в самом низу табличного представления. Я хотел бы, чтобы нижний колонтитул оставался плавающим в том же положении (прямо над выбором UITabBarController. В моем табличном представлении, скорее всего, будет 3-4 раздела с 5-10 строками в каждом разделе, поэтому я не хочу, чтобы пользователю приходилось прокручивать через все это дерьмо, когда им нужно нажать UIButton, чтобы перейти к следующему представлению. - person Johnny Gamez; 27.02.2013
comment
Я не знаю, как сделать это с помощью метода, который я вам дал. Я думаю, вам придется что-то верстать в коде или IB. Полноэкранный просмотр, который содержит табличное представление и UIView, заблокированный в нижней части FullScreeView. Затем стол был бы установлен, чтобы держать остальную часть области. - person John; 27.02.2013

В итоге я создал подвид и добавил свою кнопку в этот вид. Затем я сделал это представление своим «нижним колонтитулом».

Вот код, который дал мне желаемые результаты.

- (void)viewDidLoad
{

[super viewDidLoad];

//self.tableView.delegate = self;
//self.tableView.dataSource = self;

//save current tableview, then replace view with a regular uiview
self.tableView = (UITableView*)self.view;
UIView *replacementView = [[UIView alloc] initWithFrame:self.tableView.frame];
self.view = replacementView;
[self.view addSubview:self.tableView];

UIView *footerView  = [[UIView alloc] initWithFrame:CGRectMake(0, 370, 320, 45)];

//create the button
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
//button.userInteractionEnabled = YES;

//the button should be as big as a table view cell
//width of the button can be set but the width of the view it is added to will always match the width of the tableView
[button setFrame:CGRectMake(60, 0, 200, 45)]; 

//set title, font size and font color
[button setTitle:@"Build" forState:UIControlStateNormal];
[button.titleLabel setFont:[UIFont boldSystemFontOfSize:20]];   
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

//set action of the button
[button addTarget:self action:@selector(buildThenSegue)
 forControlEvents:UIControlEventTouchUpInside];

//add the button to the view
[footerView addSubview:button];
footerView.userInteractionEnabled = YES;

[self.view addSubview:footerView];
self.tableView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);

}

Обратите внимание, что это подкласс UITableViewController.

Я сослался на этот ответ на другой вопрос: https://stackoverflow.com/a/9084267/1091868

person Johnny Gamez    schedule 28.02.2013