iOS:使用"显示NSArray的文本("

时间:2014-06-02 09:40:40

标签: ios objective-c nsarray nsdictionary

我有ItemSore.m

-(instancetype)initPrivate
{
    NSArray *operatorUS = @[@"AT&T", @"Verizion"];
    NSArray *operatorRU = @[@"MTS", @"Megafon"];
    NSArray *operatorFR = @[@"Orange", @"SFR"];
    NSArray *operatorAE = @[@"Etisalat", @"Du"];
    self = [super init];
    if (self) {
        _privateItems = @{@"USA":operatorUS, @"Russia":operatorRU, @"France":operatorFR, @"UAE":operatorAE};
    }
    return self;
}

声明方法:

-(NSArray *)allProviders
{
    return [self.privateItems allValues];
}

在我的ItemsViewController didSelectRowAtIndexPath:中,我将值传递给pushViewController,如下所示:

NSArray *items = [[MSTItemStore sharedStore] allProviders];
MSTItemStore *selectedItem = items[indexPath.row];
providerViewController.item = selectedItem;

providerViewController的{​​{1}}(pushViewController)中,我尝试这样做:

cellForRowAtIndexPath:

但在单元格中我只得到#34;("没有文字。问题是什么? 感谢

3 个答案:

答案 0 :(得分:0)

这里的问题是你的_itemNSArray(在第一个控制器上选择了一个运算符)。因此,假设您想要获取运算符名称并将其显示在单元格中,并且假设_item是数据源数组,则应该执行以下操作:

cell.textLabel.text = self.item[indexPath.row];

编辑(OP关于indexPath.row的评论后)

  

这个self.item究竟是什么意思[indexPath.row]?

好吧,让我们来看看你的item。假设您已在第一个控制器上选择operatorUS。你的第二个控制器中的item是这样的:

(
    "AT&T", // <= index 0
    Verizion // <= index 1
)

现在,您的tableView:numberOfRowsInSection:方法应如下所示:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.item.count;
}

其中说明'对于x部分,我有n行'。由于您只有一个部分,因此您只需计算item中包含的运算符并将其返回。

最后,在cellForRowAtIndexPath: indexPath(一个指定某一节的给定行的对象)传递给您,然后返回基于此indexPath配置的单元格,其中{{1} }是与indexPath.row对应的行的索引(同样,您只有一个部分)。因此,最终该方法将被调用2次(indexPath.section),self.item.count将被indexPath.row0调用。我希望这是有道理的......

答案 1 :(得分:0)

NSString *firstString = items[indexPath.row][0];
NSString *secondString = items[indexPath.row][1];

答案 2 :(得分:-1)

那是因为你的_item是数组。在_item里面你有你的操作员阵列。防爆。如果你这样做

items[indexPath.row];

对于单元格0,您有一个operatorUS数组。然后你应该做这样的事情:

cell.textLabel1.text = self.items[0]; //return AT&T
cell.textLabel2.text = self.items[1]; //return Verizion