2015-12-09 3 views
0

Я хочу использовать registerNib: forCellReuseIdentifier: метод в моем приложенииКак получить nibWithNibName прототипа ячейки?

, когда я был сделан заказ кювета с XIb файл это хорошо. (например: SwitchTableViewCell2.xib) поскольку имя файла - это имя xib.

рабочий код хорошо:

[self.tableView registerNib:[UINib nibWithNibName:@"SwitchTableViewCell2" bundle:nil] forCellReuseIdentifier:@"xibcell"]; 

, но не работает, когда я сделал prototypecells на Tableview в mainStoryboard.

Как получить xibname прототипа на раскадровке?

кто-нибудь может проверить эту ссылку: github.com/Kernelzero/test_nav


добавить файлы изображений здесь

enter image description here

это имя контроллера: 'PushSettingController'

раскадровки этого контроллера ID: 'pushSetting'

property of tableViewController

enter image description here

ответ

1

Если вы используете прототип ячейки, имя идентификатора должно совпадать с именем dequeueReusableCellWithIdentifier

Примечание: Если вы используете прототип ячейки, вам не нужно регистрировать ячейку. Поскольку ячейка Prototype не является CustomCell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"switchcell"]; 
    if(cell == nil) 
    { 
    cell =[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 
    cell.textLabel.text = @""; 
    return cell; 
} 

Но если вы используете пользовательские ячейки, выполните следующие действия:

1 viewDidLoad вы должны зарегистрировать ячейки пользовательского

UINib *cellNib = [UINib nibWithNibName:@"SwitchTableViewCell2" bundle:[NSBundle mainBundle]]; 
[self.tableView registerNib:cellNib forCellReuseIdentifier:@"switchcell"]; 

2.Or в cellForRowAtIndexPath вы можете написать код, приведенным ниже, как это

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *[email protected]"switchcell"; 
    SwitchTableViewCell2 *cell=(SwitchTableViewCell2*)[tableView dequeueReusableCellWithIdentifier:customTableIdentifier]; 
    if (cell==nil) 
    { 
    NSArray *nibs=[[NSBundle mainBundle]loadNibNamed:@"SwitchTableViewCell2" owner:self options:nil]; 
    cell=[nibs objectAtIndex:0]; 
    } 
    cell.yourSwitchTableViewCell2Label.text = @""; 
    cell.yourSwitchTableViewCell2TextField.text = @""; 
    cell.yourSwitchTableViewCell2Button.text = @""; 
    return cell; 
} 
+0

Ошибка типа «CustomCell». Мой вопрос таков. как получить имя вместо CustomCell – Kernelzero

+0

Я обновил свой ответ – user3182143

+0

Я пытаюсь, что controllerName, storyboard_id, но я не могу получить удовлетворенный результат – Kernelzero

0

Возьмите registerNib взывать при использовании раскадровки. Если вы правильно настроили раскадровку, ячейки прототипа уже зарегистрированы в tableView.

+0

Я просто загружаю снимок экрана. Что такое nibname? идентификатор и имя класса нет. – Kernelzero

0

Нет необходимости загружать его с наконечника. Звоните:

Objective-C

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"switchcell]; 

Swift

let cell = tableView.dequeueReusableCellWithIdentifier("switchcell") 
+0

Я пробовал этот код раньше. но ячейка не показана. – Kernelzero

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