如何在视图控制器中获取对UITableView的引用?

时间:2012-03-29 21:32:04

标签: objective-c ios cocoa-touch 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似乎包含一个表视图,没有别的。

列表显示正常,但现在我想更改显示的项目。我有NSMutableArray支持表。当我更改数组时,我需要使用新数组重新绘制UITableView,但_inAppPurchaseListTable总是为零。

  • 如何获取对UITableView的引用,以便我可以调用reloadData
  • 无论如何我可以摆脱.xib吗?我没有看到一个额外的文件,除了持有一个表视图之外什么都不做。

Connections Inspector
enter image description here

1 个答案:

答案 0 :(得分:2)

我终于明白了。答案在Table View Programming Guide for iOS的第43页。

我需要将它添加到视图控制器:

- (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。