我正在为IOS创建一个应用程序,并且正在努力访问我在表视图单元格中显示的数组中的对象。
这是我每次循环循环时用于将对象添加到数组的代码。
for (int i = 0; i < [parsedArray count]; i++) {
HPTBusStops *busStops = [[HPTBusStops alloc] init];
NSArray *informationArray = [parsedArray objectAtIndex:i];
busStops.busStopNumber = [informationArray objectAtIndex:0];
busStops.busStopName = [informationArray objectAtIndex:1];
busStops.latitude = [informationArray objectAtIndex:2];
busStops.longitude = [informationArray objectAtIndex:3];
[self.busStopsHolder addObject:busStops];
}
HPTBusStops类显然是自定义的,后来在主视图控制器中,我想在编程单元时通过busStopsHolder数组重新访问这些属性,在这部分中:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
HPTBusStopsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BusStopCell" forIndexPath:indexPath];
return cell;
}
老实说,我很不确定如何通过busStopHolder数组访问busStops对象的属性。
任何帮助将不胜感激
由于 麦
答案 0 :(得分:0)
执行此操作的过于简单的方法如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
HPTBusStopsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BusStopCell" forIndexPath:indexPath];
HPTBusStops *busStops = yourSourceArray[indexPath.row];
cell.textLabel.text = busStops.name;
return cell;
}
如果tableView有一个部分,您可以使用tableView的indexPath.row属性来确定您正在处理的索引,将其用作访问源数组中相关对象的索引,然后根据该索引处的特定对象自定义单元格。在示例代码中,我假设在busStops对象上有一个名称属性,用于示例目的。
确保在numberOfRowsInSection方法中将行数设置为源数组中的对象数,无论是什么。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return yourSourceArray.count;
}
答案 1 :(得分:0)
在我看来,你可能会遇到范围问题......
你需要制作&#34; busStopsHolder&#34;包含for循环的类的@property,并将该类实例化为主视图控制器中的实例变量。
你班上的,比如MyInfoClass.h:
@property (strong, nonatomic) NSMutableArray *busStopsHolder;
MyInfoClass.m中的:
synthesize busStopsHolder;
确保已在MyInfoClass中初始化了busStopsHolder数组...
(id) init {
busStopsHolder = [[NSMutableArray alloc] init];
}
然后在主视图控制器.h:
#import "MyInfoClass.h"
@interface myMastserViewController : UIViewController {
MyInfoClass *infoClass;
}
则...
- (void) viewDidLoad {
infoClass = [[MyInfoClass alloc] init];
[infoClass methodToLoadBusStops];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
HPTBusStopsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BusStopCell" forIndexPath:indexPath];
HPTBusStop *busStop = [[infoClass busStopsHolder] objectAtIndex:indexPath.row];
[[cell textLabel] setText:[busStop busStopName]]
return cell;
}