我有一个我以前在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];
答案 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];