2016-11-17 6 views
1

Я хочу установить только один UITableCell в нижней части моего UITableView. Что-то вроде этого:Как установить только один UITableCell в нижней части UITableView?

+----------------+ 
| +------------+ | 
| | cell 1 | | 
| +------------+ | 
| +------------+ | 
| | cell 2 | | 
| +------------+ | 
| +------------+ | 
| | cell 3 | | 
| +------------+ | 
|    | 
|    | 
|    | 
|    | 
|    | 
|    | 
| +------------+ | 
| | Last cell | | 
| +------------+ | 
+----------------+ 

Но я не знаю, как это достичь.

Я посмотрел на:

, но все они должны установить все ячейки в нижней части UITableView, и я не являюсь способный сделать это для только один cell.

Можно ли установить последнюю ячейку внизу UITableView? Как я могу это достичь?

EDIT: Я попытался с двумя секциями, как предложил комментарии, но он дублирует пространство для cell 1, cell 2 и cell 3 на второй секции.

Я хочу, чтобы вторая секция имела только Last cell, а не пространство, равное высоте остальных ячеек. После этого я хочу добавить конкретное пространство в нижний колонтитул первого раздела.

Заранее благодарен!

+0

Привет, Вы пробовали просмотр нижнего колонтитула? – abarbier

+0

Процитирован ли 'LastCell' для прокрутки? – shallowThought

+2

Последняя ссылка имеет интересную идею: Раздел 0 для cell1, cell2, cell3, Раздел 1 для lastCell. Затем добавьте пустой headerView для раздела 0 (размером 0,0) и более «прозрачный», который вычисляет пространство, занимаемое между «end3» и «lastCell» «lastCell». – Larme

ответ

0

Создайте два раздела для uitableview.Put Первые предметы в FirstSection и еще один во втором разделе.

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 
    NSString *sectionName; 
    switch (section) 
    { 
     case 0: 
      sectionName = NSLocalizedString(@"mySectionName", @"mySectionName"); 
      break; 
     case 1: 
      sectionName = NSLocalizedString(@"myOtherSectionName", @"myOtherSectionName"); 
      break; 
     // ... 
     default: 
      sectionName = @""; 
      break; 
    }  
    return sectionName; 
} 
+1

И где я должен установить пространство между ними? Кроме того, мне нужен код для Swift, а не Objective. –

+0

@ Ошибка404 Для этого вы можете использовать footerView. Увеличьте высоту footerView первой секции – NSNoob

1

Я думаю, что вам нужно что-то вроде этого:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

@IBOutlet var tableView: UITableView! 
var array = ["1","2","3","4"] 
var dummyInserted = false 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    tableView.reloadData() 
    if array.count < 15 { 
     array.insert("", at: array.count-1) 
     dummyInserted = true 
     tableView.reloadData() 
    } 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

// MARK: - UITableView DataSource 
func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return array.count 
} 

// MARK: - UITableView Delegate 
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "CellIdentifier") 

    cell?.textLabel?.text = array[indexPath.row] 

    return cell! 
} 

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 

    if dummyInserted == true { 

     if indexPath.row == array.count-2 { 

      return tableView.bounds.size.height - CGFloat(((array.count-1) * 44)) 
     } 
    } 

    return 44 
} 
} 

Так что, если вы знаете, что ваш вид таблицы может содержать, например, 15 видимых строк (возможно, вы должны подсчитать, что), то вы можете

1), если последняя ячейка видна, вставить фиктивное значение в массив вас на втором последний индекс

2) установить высоту этой фиктивной строки к его IGHT, что последнее значение на дне вас табличном

Может быть, вы должны изменить код, но это должно дать вам хорошую отправную точку моей идеи

Он должен выглядеть

enter image description here

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