Как получить ссылку на UITableView в контроллере представления? - PullRequest
1 голос
/ 30 марта 2012

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

@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, кажется, содержит табличное представление и ничего больше.

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

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

Инспектор соединенийenter image description here

1 Ответ

2 голосов
/ 30 марта 2012

Я наконец понял это.Ответ на странице 43 Руководство по программированию табличного представления для 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...