2012-03-29 5 views
1

У меня есть приложение, которое отображает список продуктов, которые можно приобрести. -Контроллер для списка выглядит следующим образом:Как получить ссылку на UITableView в контроллере представления?

@interface InAppPurchaseListUIItemViewController : 
UIViewController <UITableViewDelegate, UITableViewDataSource> { 
    IBOutlet UITableView *_inAppPurchaseListTable; 
. 
. 
. 
} 
. 
. 
. 
@end 

Это код, который отображает список:

_inAppPurchaseListUIItemViewController = [[InAppPurchaseListUIItemViewController alloc] 
    initWithItemList: [[InAppPurchaseManager getInstance] getAuthorisedInAppPurchaseProducts] 
    :     self 
    andSelector:  @selector(inAppPurchaseSelected:) 
]; 

_inAppPurchaseListCustomUIView= [[InAppPurchaseListCustomUIView alloc] 
    initWithFrame:CGRectMake(0, 0, inapp_purchase_table_width, inapp_purchase_table_height)]; 

[_inAppPurchaseListCustomUIView addSubview:_inAppPurchaseListUIItemViewController.view]; 
_inAppPurchaseListUIItemViewController.view.frame = _inAppPurchaseListCustomUIView.frame; 

InAppPurchaseListCustomUIView подклассы UIView и в противном случае пустой класс.

Существует также .xib с тем же именем, что и контроллер вида. Кажется, что .xib содержит Table View и ничего больше.

Список отображает все, но теперь я хочу изменить отображаемые элементы. У меня есть NSMutableArray, поддерживающий стол. Когда я меняю массив, мне нужно получить UITableView для перерисовки с новым массивом, но _inAppPurchaseListTable всегда ноль.

  • Как получить ссылку на UITableView, чтобы я мог позвонить reloadData?
  • Есть ли в любом случае я могу избавиться от .xib? Я не вижу смысла в дополнительном файле, который ничего не делает, кроме как удерживать представление таблицы.

Connections Inspector
enter image description here

+0

Вы связали '_inAppPurchaseListTable' с файлом xib !? – Scar

+0

В .xib, используя Инспектор подключений, какие выходы связаны с табличным представлением? ... особенно в разделе «Релейные выходы»? Кроме того, как выглядит метод initWithItemList:? –

+0

@Scar, как мне это сделать? – Jay

ответ

2

я понял это окончательно. Ответ приведен на стр. 43 из Table View Programming Guide for iOS.

мне нужно добавить это к контроллеру вида:

- (void)loadView 
{ 
    tableView = [[UITableView alloc] 
     initWithFrame: [[UIScreen mainScreen] applicationFrame] 
     style:   UITableViewStylePlain 
    ]; 

    tableView.autoresizingMask = 
     UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 

    tableView.delegate = self; 
    tableView.dataSource = self; 
    [tableView reloadData]; 
    self.view = tableView; 
    [tableView release]; 
} 

Затем я удалил .xib и IBOutlet в контроллере представления.

Теперь я могу перезагрузить табличный вид с помощью [tableView reloadData];. И мне не нужен .xib.

+0

Да, не используйте .xib или IB, если вам это не нужно. Это усложняет ситуацию. –

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