0

私のヘッダーファイル:

@interface HTMLClassesViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>

だから私はとを宣言しましdataSourcedelegate

私の実装ファイルでは:

- (void)viewDidLoad {

    [super viewDidLoad];

    if (self.arrayOfClasses == nil) {
        self.arrayOfClasses = [[NSMutableArray alloc] init];
    }
    NSMutableArray *array = [[NSMutableArray alloc] init];
    ... // Gather data from HTML source and parse it into "array"
    self.arrayOfClasses = array; //arrayOfClasses here is non-nil (with correct objects)
    NSLog(@"%@ test1", [self.arrayOfClasses objectAtIndex:0]);
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    NSLog(@"%@ test1.5", [self.arrayOfClasses objectAtIndex:0]);
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"%@ test2", [self.arrayOfClasses objectAtIndex:0]);
    return [self.arrayOfClasses count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"%@ test3", [self.arrayOfClasses objectAtIndex:0]);
    static NSString *CellIdentifier = @"WebCollegeCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    cell.textLabel.text = [self.arrayOfClasses objectAtIndex:indexPath.row];
    return cell;
}

そしてこれはからの出力ですNSLog

2012-11-24 22:52:19.125 ArizonaCollegeSearch[72404:c07] CSE 240 test1
2012-11-24 22:52:19.126 ArizonaCollegeSearch[72404:c07] CSE 240 test1.5
2012-11-24 22:52:19.127 ArizonaCollegeSearch[72404:c07] (null) test1.5
2012-11-24 22:52:19.127 ArizonaCollegeSearch[72404:c07] (null) test2

ご覧のとおり、numberOfSectionsInTableViewはnull以外のオブジェクトで呼び出され、次にnullオブジェクトでnumberOfRowsInSection呼び出され、nullオブジェクトでcellForRowAtIndexPath呼び出されており、まったく呼び出されていません。どこにもありません[self.tableView reloadData]

助言がありますか?

4

1 に答える 1

1

したがって、配列を保持するプロパティを宣言する必要がありますstrong。そうしないと、割り当てられている変数が割り当て解除されると、割り当てが解除されます。そして、ローカル変数 ( your NSMutableArray *array) の場合、それはそのスコープの終わりです。たとえば、関数viewDidLoadが戻るときです。

于 2012-11-25T06:28:54.137 に答える