2016-01-10 2 views
2

Я думаю, что это ошибка.Два UITableView в том же контроллере

IOS 7,0, XCode 5.

Я имею таблицу View Controller в моей раскадровке. У меня есть TableView с «3» статическими ячейками. Затем я добавил «Просмотр» и внутри, что добавил TableView с динамическими прототипами.

Когда я пытаюсь добавить больше, чем «3» ячейки в динамической таблице, приложение сработает.

2016-01-10 08:18:21.358 Know[1381:a0b] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 3 beyond bounds [0 .. 2]' 
*** First throw call stack: 
(
    0 CoreFoundation      0x017535e4 __exceptionPreprocess + 180 
    1 libobjc.A.dylib      0x014d68b6 objc_exception_throw + 44 
    2 CoreFoundation      0x01707a32 -[__NSArrayI objectAtIndex:] + 210 
    3 UIKit        0x00772983 -[UITableViewDataSource tableView:heightForHeaderInSection:] + 50 
    4 UIKit        0x00504fba -[UITableViewController tableView:heightForHeaderInSection:] + 61 
    5 UIKit        0x00333920 -[UITableView _delegateWantsHeaderForSection:] + 349 
    6 UIKit        0x0049a8f7 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 133 
    7 UIKit        0x0049eb3d -[UITableViewRowData numberOfRows] + 98 
    8 UIKit        0x003274c2 -[UITableView noteNumberOfRowsChanged] + 120 
    9 UIKit        0x00326e6f -[UITableView reloadData] + 814 
    10 UIKit        0x0032a8d3 -[UITableView _reloadDataIfNeeded] + 65 
    11 UIKit        0x0032f4f4 -[UITableView layoutSubviews] + 36 
    12 UIKit        0x002b3dd7 -[UIView(CALayerDelegate) 

Это номер раздела для статической таблицы.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    if (tableView == self.ismTableView) { 
     return 4; 
    } else { 
     // Static sections 
     return 3; 
    } 
} 

Несмотря на то, что я проверяю имя таблицы и возвращаю правильный счет, оно, похоже, не воспринимает его.

+0

И у вас есть проверка табличного вида в каждом методе? Почему бы вам не использовать контроллеры детского просмотра? – Wain

+0

@Wain Да, проверьте каждый метод. Как использовать контроллер детского просмотра? Что бы я указал для пользовательского класса? – ATOzTOA

ответ

0

Получил это!

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    if (tableView == self.ismTableView) { 
     return 1; 
    } else { 
     // Static sections 
     return 3; 
    } 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    // Return the number of rows. 
    if (tableView == self.ismTableView) { 
     return 4; 
    } else { 
     // Static sections 
     return 1; 
    } 
} 

- (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return 0; 
} 

Без добавления indentationLevelForRowAtIndexPath, он бросает еще одно исключение:

2016-01-10 08:32:07.134 Know[1607:a0b] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]' 
*** First throw call stack: 
(
    0 CoreFoundation      0x017535e4 __exceptionPreprocess + 180 
    1 libobjc.A.dylib      0x014d68b6 objc_exception_throw + 44 
    2 CoreFoundation      0x01707a32 -[__NSArrayI objectAtIndex:] + 210 
    3 UIKit        0x00772b9e -[UITableViewDataSource tableView:indentationLevelForRowAtIndexPath:] + 127 
    4 UIKit        0x0050509a -[UITableViewController tableView:indentationLevelForRowAtIndexPath:] + 61 
    5 UIKit        0x00332035 __53-[UITableView _configureCellForDisplay:forIndexPath:]_block_invoke + 1786 
    6 UIKit        0x002aaf5f +[UIView(Animation) performWithoutAnimation:] + 82 
    7 UIKit        0x002aafa8 +[UIView(Animation) _performWithoutAnimation:] + 40 
    8 UIKit        0x00331936 -[UITableView _configureCellForDisplay:forIndexPath:] + 108 
    9 UIKit        0x00337d4d -[UITableView _createPreparedCellForGlobalRow:withIndexPath:] + 442 
    10 UIKit        0x00337e03 -[UITableView _createPreparedCellForGlobalRow:] + 69 
    11 UIKit        0x0031c124 -[UITableView _updateVisibleCellsNow:] + 2378 
    12 UIKit        0x0032f5a5 -[UITableView layoutSubviews] + 213 
    13 UIKit        0x002b3dd7 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 355 
    14 libobjc.A.dylib      0x014e881f -[NSObject 
1

Второй вид таблицы призывающую реализацию по умолчанию методов Tableview, реализации это по умолчанию работать со свойством Tableview контроллера (первый вид таблицы), который содержит только три ячейки. Итак, я думаю, вам придется переопределить все методы, которые получают indexPath