2015-03-11 2 views
1

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

Вот снимок экрана начальной загрузки таблицы и один справа будет после того как я вернулся из одного из представлений, что подтолкнули щелкнув строку

enter image description here

Вот мой код контроллера :

class AccountInfoTableViewController: UITableViewController{ 

var delegate: AccountInfoTableViewDelegate? 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.navigationController?.topViewController.title = "Account Info" 
    self.automaticallyAdjustsScrollViewInsets = true 
    println("NAV BAR HEIGHT \(self.navigationController?.navigationBar.frame.size.height)") // 44.0 
// prints NAV BAR HEIGHT 44.0 

}

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return 70 
} 

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    if let cell = tableView.cellForRowAtIndexPath(indexPath){ 
     delegate?.accountInfoTableRowClicked(cell.textLabel!.text!) 
    } 
} 

}

ВОЗМОЖНО ВАЖНО:

Этот UITableViewController используется в контроллере бар вкладки

Добавлено некоторые более подробно и код in this question

+0

Убедитесь, что 'Adjust Scroll View Insets' в вашем представлении таблицы выглядит верно. Это можно найти в интерфейсе Builder на вкладке Attribute Inspector для вашего контроллера вида – Ian

+0

@Bluehound yes, Adjust Scroll View Insets отмечен –

+0

Это странно ... Похоже, как «Настроить прокрутки», так и «Расширять края под верхними барами» 'unchecked ... Если вы не найдете причины, вы можете попробовать это:' self.edgesForExtendedLayout = UIRectEdgeNone' (но только если ваша панель навигации всегда будет непрозрачной) –

ответ

1

, глядя на ваш другой вопрос, мне интересно, является ли это той же проблемой, когда UITabBarController встроен в UINavigationController. Если это так, то просто снова резюмировать, иерархия управления должен быть следующим:

Первый UINavigationController -> Первый UITableViewController Второй UINavigationController -> Второй UITableViewController Наконец, оба вышеуказанных UINavigationControllers добавлены в массив viewControllers в UITabBarController в ,

Надеюсь, что это поможет!

+0

yep, тот же вопрос - только что отправил некоторый пример кода в другой вопрос. Большое спасибо за ваш глубокий ответ, он открыл мне глаза на некоторые вещи, которые я определенно не понял. Спасибо, Марк, оцените вашу помощь. –

0

ли UITableViewController встроенный в UINavigationController в раскадровке? Сделайте это, и вы должны быть золотыми. Попробовали ли вы вручную настроить верхнее смещение контента (через раскадровку) до 44?

+0

Нет, я создаю свои представления в коде. Я пробовал корректировать смещение в коде (viewDidLoad), которое сработало, но при возврате из толкаемого представления вместо того, чтобы находиться за навигационной панелью, это находится далеко от вершины. Так что, я думаю, я имею в виду, что это действительно не сработало :) –

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