将代码调整为viewDidLoad而不是UITableView

时间:2014-01-06 23:25:08

标签: ios objective-c

我有一个我以前在UITableView方法中调用的代码

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath


但是,我现在想在viewDidLoad中使用它,但当然这个代码不会使用objectatIndex:.row - 我需要在代码中更改以使其工作在viewDidLoad中

SKProduct * product = (SKProduct *) [_products objectAtIndex:.row];

_priceFormatter = [[NSNumberFormatter alloc] init];
[_priceFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[_priceFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[_priceFormatter setLocale:product.priceLocale];
labelPrice.text = [_priceFormatter stringFromNumber:product.price];

2 个答案:

答案 0 :(得分:1)

只需将indexPath.row替换为所需对象的索引编号即可。例如,如果您想要使用第一个对象:

SKProduct * product = (SKProduct *) [_products objectAtIndex:0];

答案 1 :(得分:0)

看起来你已经为你的价格格式器声明了一个iVar。如果是这种情况,那么将此代码放在viewDidLoad:

_priceFormatter = [[NSNumberFormatter alloc] init];
[_priceFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[_priceFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[_priceFormatter setLocale:product.priceLocale];

这样效率更高,因为我们可以为每个单元格使用相同的NSNumberFormatter,而不是一直创建新的单元格。

然后,您可以将此代码放在cellForRowAtIndexPath:

SKProduct * product = (SKProduct *) [_products objectAtIndex:indexPath.row];
labelPrice.text = [_priceFormatter stringFromNumber:product.price];