我对Iphone开发很陌生。所以如果我问一些非常简单的问题,请多多包涵。

在我的应用程序中,我有多个 View (即.xib文件)。在单击主 View (CouponWebsiteViewController.Xib)上的按钮时,应用程序应加载包含UITable的第二个 View (BrowseList.Xib),我必须用一些数据填充该UITable。我编写了以下代码来填充BrowseList.m文件中的数据:

- (void) viewDidLoad{
    arrayData = [[NSArray alloc] init];
    arrayData = [arrayData arrayByAddingObject:@"dfsgdf"];
    arrayData = [arrayData arrayByAddingObject:@"aaaaaa"];
    self.lblNewScreen.text = [arrayData objectAtIndex:0];
    [super viewDidLoad];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [arrayData count];
}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc]
                 initWithStyle:UITableViewCellStyleDefault
                 reuseIdentifier:CellIdentifier]
                autorelease];
    }

    NSString *cellValue = [arrayData objectAtIndex:indexPath.row];
    cell.textLabel.text = cellValue;
    [tableView setEditing:YES animated:YES];
    return cell;
}

但是它没有填充表中的数据,当我调试此代码时,我发现它没有执行cellForRowAtIndexPath方法,而是在调试numberOfRowsInSection和numberOfSectionsInTableView方法。

但是有趣的是,当我在CouponWebsiteViewController.m(即在主 View 上)上编写相同的代码时,它正在填充表中的数据。

关键是该代码在主 View 上可以正常工作,但在其他 View 上不起作用。

任何人都可以告诉我我缺少什么吗,或者可以通过其他任何方式在主 View 之外的其他 View 上填充UITable。

提前致谢。
高拉夫

最佳答案

我不是很积极,但是这里有一些想法。

  • 我认为将数组代码放入viewDidLoad中为时已晚。在将数据放置在表中之后执行ViewDidLoad。尝试将此代码放入initWithStyle方法或您拥有的任何init方法中。或者甚至可以将它放在ViewWillAppear方法中,但是请确保遵循下一个建议。
  • 您可以尝试的另一件事是,只需在[self.tableView reloadData]方法的末尾调用viewDidLoad。尽管这并不像第一个建议那样理想。
  • 关于UITableView cellforrowatindexpath未调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1939032/

    10-12 06:28