Как я могу исправить Tableview на экран

Я добавил Tableview в xib-файл (вы можете видеть на изображении).tableview загружается хорошо. Но последняя ячейка находится вне экрана, поэтому, когда я провожу пальцем вверх, отображается последний индекс. Когда я выхожу из рук, последняя клетка не появляется. Я не меняю высоту таблицы. Почему не фиксируется на моем экране?

Я использую раскрывающееся меню, как Facebook в этом проекте: https://github.com/mikefrederick/MFSideMenu

Также Вы можете увидеть проблему по фильму.

https://www.dropbox.com/s/usfwdhl5w9znkl6/IMG_0006.MOV

кино

viewcontroller.h

@property(nonatomic,retain)IBOutlet UITableView * tableview;

viewcontroller.m

-(void)viewDidAppear:(BOOL)animated
{
     self.tableview.backgroundColor=[UIColor colorWithRed:(28/255.0) green:(28/255.0) blue:(28/255.0) alpha:1];
     [self.tableview setSeparatorColor:[UIColor blackColor]];

}
- (void)viewDidLoad
{
    [super viewDidLoad];




    if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
        self.edgesForExtendedLayout = UIRectEdgeNone;

}
#pragma mark -
#pragma mark - UITableViewDataSource


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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (section==0)
    {
        return 5;
    }
    if (section==1)
    {
        return 3;
    }
    return 0;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    cell.textLabel.text =@"exampleCell";



    NSLog(@"cell.contentView.bounds.size.width %1.0f",cell.contentView.bounds.size.width);
    return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == 1)
        return 40;
    return 0;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
   self.tableview.layer.cornerRadius = 10.0f;
    tableView.layer.borderWidth = 2.0;
    tableView.layer.borderColor = [UIColor redColor].CGColor;
    return 60;


}
#pragma mark UITableViewDelegate
- (void)tableView: (UITableView*)tableView
  willDisplayCell: (UITableViewCell*)cell
forRowAtIndexPath: (NSIndexPath*)indexPath
{

    cell.backgroundColor =[UIColor colorWithRed:(41/255.0) green:(41/255.0) blue:(41/255.0) alpha:1];
    cell.textLabel.backgroundColor = [UIColor clearColor];
    cell.detailTextLabel.backgroundColor = [UIColor clearColor];
    if([indexPath row] == ((NSIndexPath*)[[tableView indexPathsForVisibleRows] lastObject]).row){
        //end of loading
        //for example [activityIndicator stopAnimating];

    }
}

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)];
    [headerView setBackgroundColor:[UIColor colorWithRed:(112/255.0) green:(112/255.0) blue:(112/255.0) alpha:1]];
    UILabel *titleLabel = [ [UILabel alloc] initWithFrame:CGRectMake(20, 0, 300, 44)];

    titleLabel.text = @"MÜŞTERİ ALANI";

    titleLabel.textColor = [UIColor whiteColor];

    titleLabel.backgroundColor = [UIColor clearColor];

    [headerView addSubview:titleLabel];
    return headerView;
}

3 ответа

Решение

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

Одним из решений было бы проверить любые примеры приложений, которые поставляются с выдвижным контроллером, который вы используете, чтобы увидеть, не страдают ли они от ошибки, и сообщить об этом разработчику, если это так. Это было бы хорошо, потому что другие разработчики выиграют от улучшений. Фактически возможно, что выдвижной контроллер, который вы используете, исправил эту ошибку с более новой версией, которой у вас еще нет.

Другое решение, при условии, что есть пример приложения, которое не страдает от этого, состоит в том, чтобы увидеть, как оно добавляет свое выдвижное меню, и посмотреть, не удается ли вам сделать что-то, что они делают.

Наконец, если нет примера приложения или вы не можете понять, почему они работают по-другому, попробуйте добавить следующее в ваш контроллер представления viewDidAppear: метод:

self.view.frame = self.view.superview.bounds;

Это предполагает, что представление контейнера, которое они создают, имеет правильный размер.

Сначала вы должны выбрать ячейку, а не вид из таблицы. Затем перейдите к инспектору атрибутов и щелкните разделитель, и вы должны выбрать пользовательские вставки. Наконец, вы можете настроить разделительную линию в соответствии с вашими пожеланиями. Надеюсь, что это поможет вам и другим. Спасибо за вопрос тоже.

Кажется, ваша проблема в вашей хибе. Вы должны установить размер вашего представления в "Freeform", а затем добавить ограничения для автоматического изменения размера вашего представления, как вы сделали в вашем tableView.

Свободная форма

Autosizing

Другие вопросы по тегам