SeniorLee,
Добро пожаловать в StackOverflow!
Вы получили правильный ответ на свой вопрос - это последний код:
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
Когда отображается таблицаидет к построению вашей таблицы, он вызывает 2 класса - делегат таблицы и источник данных таблицы.
Источник данных - это именно то, что подразумевает название, - источник данных в вашей таблице.Делегат, с другой стороны, обрабатывает взаимодействие с таблицей в режиме реального времени и способ ее отображения (например, что происходит при нажатии строки?).
Во многих случаях программисты устанавливают оба параметра:Источник данных и делегат табличного представления одному и тому же классу - UITableViewController, которому принадлежит табличное представление.
В любом случае, на ваш вопрос:
Весьма вероятно, что прямое назначение не является 'не работает явно, потому что есть обратный вызов делегата.Когда табличное представление раскладывается, оно спрашивает своего делегата "есть ли у вас представление нижнего колонтитула в разделе x?".Это вышеописанный метод.
Если вы не реализуете этот метод, табличное представление будет иметь реализацию по умолчанию, которая что-то делает - в этом случае, вероятно, установите ее равной nil.
Итак,Я предполагаю, что, хотя вы устанавливаете это свойство непосредственно в viewDidLoad, оно перезаписывается на ноль в табличном представлении, потому что вы не реализуете обратный вызов делегата.Вместо этого перенесите код представления в метод обратного вызова, и он должен прекрасно работать.
Кроме того, я не думаю, что вам нужно переносить UIButton в UIView - UIButton является подклассом UIView и, следовательно, должен работать простохорошо.