2016-01-26 2 views
-2

У меня есть tableView, который всегда имеет пустое пространство под панелью навигации, после того как я отлаживал иерархию представлений, я обнаружил, что размер tableView отличается от размера tableViewWrapperView. Есть идеи? enter image description hereРазмер iOS tableview отличается от размера tableViewWrapperView

enter image description here enter image description here

Ниже приведен код tableViewController, что у меня возникли проблемы с:

#import "BBTCampusInfoTableViewController.h" 
#import "BBTCampusInfoManager.h" 
#import "BBTCampusInfoTableViewCell.h" 
#import <UIImageView+WebCache.h> 

@interface BBTCampusInfoTableViewController() 

@end 

@implementation BBTCampusInfoTableViewController 

extern NSString * campusInfoNotificationName; 

- (void)viewWillAppear:(BOOL)animated 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveCampusInfoNotification) name:campusInfoNotificationName object:nil]; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.automaticallyAdjustsScrollViewInsets = NO; 
    //self.tableView.contentInset = UIEdgeInsetsZero; 
    //Retrive all campus infos 
    [[BBTCampusInfoManager sharedInfoManager] retriveData:@""]; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
} 

#pragma mark - Table view data source 

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [[BBTCampusInfoManager sharedInfoManager].infoArray count]; 
} 

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

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    return 0.5; 
} 

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; 
    return view; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSString *cellIdentifier = @"infoCell"; 
    BBTCampusInfoTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

    if (!cell) 
    { 
     cell = [[BBTCampusInfoTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
    } 

    NSArray *infoArray = [BBTCampusInfoManager sharedInfoManager].infoArray; 

    [cell setCellContentDictionary:infoArray[indexPath.row]]; 

    [cell setNeedsUpdateConstraints]; 
    [cell updateConstraintsIfNeeded]; 

    return cell; 
} 

- (void)didReceiveCampusInfoNotification 
{ 
    NSLog(@"Did receive campus info notification"); 
    [self.tableView reloadData]; 
} 
+0

Возможной дубликата [Удалить пустое пространство перед тем ячеек в UITableView] (http://stackoverflow.com/questions/18906919/remove-empty-space-before-cells-in-uitableview) –

+0

Я читал, что один, но его методы не работают для меня. – Caesar

+0

@Caeser, поскольку вы, судя по всему, пробовали все (и для вас ничего не работает), добавьте ссылки на методы, которые вы прочитали и которые не работают для вас. В противном случае люди будут продолжать повторять обычные методы и тратить время каждого. – NSNoob

ответ

0

при использовании интерфейса строитель, попробуйте:

Выберите контроллер представления , Инспектор открытых атрибутов, По умолчанию «Настроить вставки прокрутки» включен.

или программно попробовать:

self.automaticallyAdjustsScrollViewInsets = NO;

в viewdidload

+0

Я пробовал, но он не работает. – Caesar

0

ли Вы, попробуйте добавить этот код в viewDidload:

self.edgesForExtendedLayout = UIRectEdgeNone; 

Или попробуйте этот код:

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
    return 0.5 
} 
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 

    return UIView(frame: CGRectZero) 
} 
+0

Да, я пробовал этот, но он не работает. – Caesar

+0

@Caesar проверить мой ответ. –

+0

Я пробовал, но пустое пространство стало еще шире :( – Caesar

1

Поскольку вы постоянно говорят он не работает, попробуйте это , это своего рода уродливое обходное решение, но оно работает. (См изображения)

  • просто просто добавить некоторые компоненты пользовательского интерфейса, прежде чем табличном -

enter image description here

Это произойдет, если вид таблицы (или Scrollview) является единственным/первым дополнительным ракурсом на виде контейнера.

В качестве решения можно снять галочку Adjust Scroll View вставок Смотрите рисунок ниже

Adjust Scroll View Insets

+0

Я пробовал этот метод, но он не работает. – Caesar

+0

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

+0

В вашем случае вы добавили tableView в viewController? Я просто перетащил tableViewController. – Caesar

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