Мой вывод в табличном представлении не отображает вывод правильно - PullRequest
0 голосов
/ 30 мая 2018

Даже после задания ограничений, мой вывод не соответствует моим ожиданиям, метки перекрываются, и мое изображение смещается влево.

Фрагмент моего кода -

- (void)viewDidLoad {
    [super viewDidLoad];
  //  [self.emplyoyeeTableView registerNib:[UINib nibWithNibName:@"SimpleTableCell" bundle:nil] forCellReuseIdentifier:@"SimpleTableCell"];

    NSManagedObjectContext *manageobjectcontext = [self manageobjectcontext];
    NSFetchRequest *fetchrequest = [[NSFetchRequest alloc]initWithEntityName:@"Employee"];
    self.employeeArray = [[manageobjectcontext executeFetchRequest:fetchrequest error:nil]mutableCopy];
    [self.emplyoyeeTableView reloadData];
}

#pragma mark - <UITableViewDataSource>
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.employeeArray.count;

}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 110.0f;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    SimpleTableCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SimpleTableCell"];
    NSManagedObject *emp = [self.employeeArray objectAtIndex:indexPath.row];
    [cell.nameLabel setText:[NSString stringWithFormat:@"%@",[emp valueForKey:@"name"]]];
    [cell.emailLabel setText:[NSString stringWithFormat:@"%@",[emp valueForKey:@"email"]]];
    [cell.designationLabel setText:[NSString stringWithFormat:@"%@",[emp valueForKey:@"designation"]]];

    [cell.picImageView setImage:[UIImage imageNamed:@"skinage 2.png"]];

    return cell;
}

theвывод такой: enter image description here

Ответы [ 4 ]

0 голосов
/ 30 мая 2018

Попробуйте этот код: -

- (void)viewDidLoad {
    [super viewDidLoad];

[self.emplyoyeeTableView registerNib:[UINib nibWithNibName:@"SimpleTableCell" bundle:nil] forCellReuseIdentifier:@"SimpleTableCell"];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // static NSString *simpleTableIdentifier = @"SimpleTableCell";



   SimpleTableCell *cell = (SimpleTableCell *) [tableView dequeueReusableCellWithIdentifier:@"SimpleTableCell"];


    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }
  cell.clipsToBounds=YES;

    NSManagedObject *emp = [self.employeeArray objectAtIndex:indexPath.row];
    [cell.nameLabel setText:[NSString stringWithFormat:@"%@",[emp valueForKey:@"name"]]];
    [cell.emailLabel setText:[NSString stringWithFormat:@"%@",[emp valueForKey:@"email"]]];
    [cell.designationLabel setText:[NSString stringWithFormat:@"%@",[emp valueForKey:@"designation"]]];

    [cell.picImageView setImage:[UIImage imageNamed:@"skinage 2.png"]];

    return cell;
}
0 голосов
/ 30 мая 2018

Проблема в том, что вы получили экземпляр UITableViewCell вместо SimpleTableCell при снятии очереди с ячейки.

Просто предположение.Попробуйте заменить этот фрагмент:

[self.emplyoyeeTableView registerNib:[UINib nibWithNibName:@"SimpleTableCell" bundle:nil] forCellReuseIdentifier:@"SimpleTableCell"];

SimpleTableCell *cell = (SimpleTableCell *) [tableView dequeueReusableCellWithIdentifier:@"SimpleTableCell"];

if (cell == nil) {
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];
}

на:

SimpleTableCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SimpleTableCell"];

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

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

0 голосов
/ 30 мая 2018

Вы должны удалить эту строку:

 [self.emplyoyeeTableView registerNib:[UINib nibWithNibName:@"SimpleTableCell" bundle:nil] forCellReuseIdentifier:@"SimpleTableCell"];

Поскольку вы уже создали SimpleTableCell внутри вашего viewController, поэтому нет необходимости регистрировать Nib.

0 голосов
/ 30 мая 2018

Я думаю, вам нужно установить свой источник данных tableview в вашем viewController следующим образом.

tableView.dataSource = self
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...