2015-04-07 3 views
0

Я пытаюсь обновить label.text Я создаю в заголовке раздела, когда добавляю новую строку без перезагрузки всего раздела.Обновить заголовок в таблицеView swift

В настоящее время я нашел решение, но для этого требуется большое количество , если заявления. Я узнал, что заголовок секции также является строкой, а число строк зависит от архитектуры процессора, которую имеет iPhone, если это 32, номер строки - 2147483647, если это 64-разрядный номер строки 9223372036854775807.

для iPhone 5 я

self.tableView.reloadRowsAtIndexPaths([NSIndexPath(forRow:2147483647, inSection:1)], withRowAnimation: .Fade) 

где 2147483647 это номер строки заголовка, .... круто, правда?

Теперь я знаю, что это не очень хороший способ сделать это, и мне нужно выполнить проверки версии телефона. Есть ли другой способ сделать это или как я это делаю?

+0

Почему бы не получить доступ к заголовку напрямую, используя 'headerViewForSection (_ :)' или 'tableHeaderView' UITableView? – mrahmiao

+0

Как я могу получить доступ к метке внутри представления заголовка вне его метода? –

+0

Подклассирование? Для получения дополнительной информации вы можете обратиться к документации 'UITableViewHeaderFooterView', и вы можете найти ответы. – mrahmiao

ответ

1

Сделать объект UILabel

var lbl_header = UILabel() 


func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 
    { 

    self.lbl_header.frame = CGRectMake(0, 0, 320, 15) 
    self.lbl_header.text = "Test" 
    self.lbl_header.backgroundColor = UIColor.redColor() 
    return self.lbl_header; 

    } 

Теперь вы хотите изменить текст UILabel в Для отл. я нажмите на кнопку Изменить текст этикетки

@IBAction func update_lbl_click(sender: UIButton) 
    { 
    self.lbl_header.text = "Hello" 
    } 

Это изменит текст lbl_header, чтобы Здравствуйте ...

0

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

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 

    var myCustomView: UIImageView 
    var myImage: UIImage = UIImage(named: "myImageResource") 
    myCustomView.image = myImage 

    let header: UITableViewHeaderFooterView = view as UITableViewHeaderFooterView 
    header.addSubview(myCustomView) 
    return header 
} 

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

0

Swift 3 обновление

var lbl_header = UILabel() 

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 
{ 
    self.lbl_header.frame = CGRect(x: 0, y: 0, width: 200, height: 21) 
    self.lbl_header.text = "Test" 
    self.lbl_header.backgroundColor = UIColor.green 
    return self.lbl_header; 
} 

Теперь оно может быть изменено путем доступа к lvl_header.text где-то еще.

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