Так у меня есть пользовательские UITableViewCell:пользовательских UITableViewCell без dequeueReusableCellWithIdentifier
TestTableViewCell.h
#import <UIKit/UIKit.h>
@interface TestTableViewCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UILabel *testCellLabel;
@end
TestTabelViewCell.m
#import "TestTableViewCell.h"
@implementation TestTableViewCell
-(id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
_testCellLabel = [[UILabel alloc] init];
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
А то у меня контроллер с видом который использует пользовательскую ячейку вида таблицы. Однако эта проблема заключается в том, что я не хочу использовать dequeueReusableCellWithIdentifier в cellForRowAtIndexPath. Вместо этого я хочу иметь массив ячеек.
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@end
ViewController.m
#import "ViewController.h"
#import "TestTableViewCell.h"
@interface ViewController()
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property (strong, nonatomic) NSArray *myTableViewCells;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (NSArray *)myTableViewCells {
TestTableViewCell *cell1 = [[TestTableViewCell alloc] init];
cell1.testCellLabel.text = @"one";
cell1.backgroundColor = [UIColor blueColor];
TestTableViewCell *cell2 = [[TestTableViewCell alloc] init];
cell2.testCellLabel.text = @"two";
cell1.backgroundColor = [UIColor greenColor];
if (!_myTableViewCells) {
_myTableViewCells = @[cell1, cell2];
}
return _myTableViewCells;
}
#pragma mark - UITableView delegate functions
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.myTableViewCells.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
TestTableViewCell *cell = self.myTableViewCells[indexPath.row];
return cell;
}
@end
Проблема заключается в том, что нет testCellLabel
появляться в табличной ячейке. Я знаю, что у меня есть ячейки, потому что я установил их цвет фона.
После разговора с несколькими людьми, по-видимому, мне нужно выполнить какую-то загрузку из XIB или NIB для правильного загрузки пользовательского интерфейса? Хотя метка определена в ячейке в раскадровке.
Я знаю, что это идет вразрез с нормой, и что компания Apple действительно хочет вас использовать dequeueReusableCellWithIdentifier, но я знаю, что это не будет работать в ситуации, мне нужно это. Я сделал чтение на этом много так пожалуйста не просто скажите мне использовать его. Этот пример кода очень простой, например, ради и простота использования.
Любая помощь была бы принята с благодарностью.
где вы называете этот метод myTableViewCells? –
Я ** ** расскажу вам просто использовать 'dequeueReusableCellWithIdentifier:'.Я сомневаюсь, что у вас есть сценарий, где это не сработает. У вас ** будут проблемы с UITableView, жалующиеся на то, что вы не получили ячейку из 'dequeueReusableCellWithIdentifier:'. – jcaron
Почему нельзя использовать 'dequeueReusableCellWithIdentifier'? Я не могу в это поверить! –