0

ここに似たような質問がたくさんあることは知っていますが、私はたくさんのレビューをしましたが、まだ行き詰まっています。誰かが私のコードを調べて、UITableViewメソッドが呼び出されていない理由を見つけることができるかどうかを確認できますか?配列を確認しましたが、データが入力されていますが、テーブルでreloadDataを呼び出すと、何も表示されません。

プロセスは、SOAP呼び出しを行ってデータを取得し、返されたXMLをディクショナリに解析して(各エントリはストア情報の配列です)、それをテーブルのViewControllerに渡します。次に、ディクショナリをループし、各配列を取得し、ストア名を取得して、それをdataPointTitles配列に配置します。これが私のテーブルのデータソースです。委任者が設定されます。アプリが起動すると、データソースでカウント0が取得されます。これは、データがまだロードされていないため正しいものです。ユーザーがデータを取得すると、dataPointTitles配列にデータが入力されますが(以下のコンソールログの印刷出力を参照)、どのメソッドも起動されません。

これが私のコードです:

.hファイル:

@interface DataController : UIViewController  <UITableViewDelegate, UITableViewDataSource>{ 

NSMutableDictionary* dataDict;
NSMutableArray* dataPointTitles;

UILabel* lblDataLabel;
UITableView* tblDataTable;

SoapController* soapManager; 

ColorController* colorManager;

MKMapView* thisMap; 
CLPlacemark* thisPlaceMark;



}

@property (nonatomic, retain) NSMutableDictionary* dataDict;

- (void) parseData; 

- (void) setDataDict : (NSMutableDictionary* ) passedDict;

@end

.mファイルの関連部分

#import "DataController.h"

@interface DataController ()



@end

@implementation DataController

@synthesize dataDict;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];

//color manager
colorManager = [ColorController new];

//add data label
lblDataLabel = [[UILabel alloc] initWithFrame:CGRectMake(10.0, 40.0, 300.0, 30.0)];
[lblDataLabel setTextColor:[UIColor whiteColor]];
[lblDataLabel setFont: [UIFont fontWithName:@"Helvetica-Bold" size: 12]];
[lblDataLabel setText:@"Local Medicare Providers and Services:"];
[lblDataLabel setBackgroundColor:[UIColor clearColor]];

//add the table 
tblDataTable = [[UITableView alloc] initWithFrame: CGRectMake(10.0, 70.0, 300.0, 300.0)];
tblDataTable.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
tblDataTable.separatorColor = [colorManager setColor:176.0:196.0:222.0];
tblDataTable.layer.borderWidth = 1.0;
tblDataTable.rowHeight = 20.0;
tblDataTable.scrollEnabled = YES;
tblDataTable.delegate = self;
tblDataTable.dataSource = self;

[self.view addSubview:lblDataLabel];
[self.view addSubview:tblDataTable];

}

- (void) setDataDict : (NSMutableDictionary* ) passedDict {

dataDict = passedDict;
[self parseData];

} 


#pragma mark Parsing Data
- (void) parseData { 

dataPointTitles = [[NSMutableArray alloc] init];

for(NSString* thisObj in dataDict) { 
    NSArray* thisDataSet = [dataDict objectForKey:thisObj];
    [dataPointTitles addObject:[thisDataSet objectAtIndex:1]];
}
NSLog(@"%@", dataPointTitles);
[tblDataTable reloadData];

}

#pragma mark Table Management
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
NSLog(@"%i", [dataPointTitles count]);
return 1;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

return [dataPointTitles count];
}

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

static NSString *CellIdentifier = @"tableCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

cell.textLabel.textColor = [UIColor colorWithRed:66.0/255.0 green:66.0/255.0 blue:66.0/255.0 alpha:1];
cell.textLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size: 13.0];
cell.textLabel.text = [dataPointTitles objectAtIndex:indexPath.row];

CGRect cellFrame = [cell frame];
cellFrame.size.height = 50.0;

return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

NSString* thisDataPointTitle = [dataPointTitles objectAtIndex:indexPath.row];

for(NSString* thisObj in dataDict) { 

    NSArray* thisDataPoint = [dataDict objectForKey:thisObj];

    if ([thisDataPoint objectAtIndex:1] == thisDataPointTitle) { 

    }
}
}

parseDataメソッドからのconsole.log出力は次のとおりです。

"PASSAVANT DEVELOPMENT CORPORATION",
"MYERS DRUG STORE INC",
"WAL-MART STORES EAST LP",
"JAMES GRANT MCGINNESS",
"WAL-MART STORES EAST INC",
"WILLIAM J DIMINO",
"SUBURBAN EYE CARE OPTOMETRIC",
"CMMC INC",
"FOR EYES OPTICAL CO INC",
"LACONS PHARMACY INC",
"PASSAVANT DEVELOPMENT CORPORATION",
"WAL-MART STORES EAST LP",
"RITE AID CORPORATION",
"JAMES GRANT MCGINNESS",
"ABLE MEDICAL EQUIPMENT",
"GIANT FOOD STORES LLC",
"WALGREEN CO",
"ACCESS CARE INC",
"RITE AID CORPORATION",
"CVS DEKALB NORRISTOWN INC",
"FS-PHILADELPHIA LLC",
"DRUG EMPORIUM INC",
"PAUL D HALPERN OD",
"HARRY W FIRTH  JR",
"ABLE MEDICAL EQUIPMENT",
"ACME MARKETS INC DE",
"BROWN'S CH LLC",
"THE MEDICINE SHOPPE",
"MYERS DRUG STORE INC",
"NCS HEALTHCARE OF PENNSYVANIA INC",
"ACCESS CARE INC",
"NORMATEC INC",
"WAL-MART STORES EAST LP",
"COLE VISION CORPORATION",
"RESTORATIVE INNOVATIONS INC",
"ABLE MEDICAL EQUIPMENT",
"CMMC INC",
"KMART OF PENNSYLVANIA LP",
"WAL-MART STORES EAST LP",
"THERESE C DESCHENES OD PC",
"ALLEN SOFFER OD PC",
"WAL-MART STORES EAST INC",
"RITE AID CORPORATION",
"NORRISTOWN CVS INC",
"WAL-MART STORES EAST LP",
"FOR EYES OPTICAL CO INC",
"LACONS PHARMACY INC"
4

1 に答える 1

1

コメントから:明らかに、複数のDataControllerオブジェクトがロジックに関与していて、解析/ビューの読み込みで混乱を引き起こしているという問題があります。

于 2012-06-29T15:31:55.383 に答える