В Swift с API dequeueReusableCell у нас нет контроля над созданием нового экземпляра TableViewCell. Но что, если мне нужно передать некоторые начальные параметры в мою пользовательскую ячейку? Установка параметров после удаления потребует проверки, если они уже установлены и кажутся более уродливыми, чем это было в Objective- C, где можно было создать собственный инициализатор для ячейки.
Вот Пример кода того, что я имею в виду.
Objective-C, assuming that I don't register a class for the specified identifier:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString* reuseIdentifier = @"MyReuseIdentifier";
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
if (!cell)
{
cell = [[MyTableViewCell alloc] initWithCustomParameters:...]; // pass my parameters here
}
return cell;
}
Swift:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MyReuseIdentifier")
if let cell = cell as? MyTableViewCell {
// set my initial parameters here
if (cell.customProperty == nil) {
cell.customProperty = customValue
}
}
}
Я что-то пропускаю или это так, как должно работать в Swift?