-3

我正在编写一个有很多视图的应用程序,我使用了滑动视图库(ECSlidingViews)。问题是当我用对象填充数组并用tableView:cellForRowIndexPath:方法中的对象填充表时,它确实会在表中显示数据,但是当我转到其他视图并返回时,数据会因为tableView:cellForRowIndexPath:没有被调用而消失。这是代码:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath   
{   
NSLog(@"begin of cellForRowAtIndexPath");    
SchedualeCell *cell = (SchedualeCell *)[tableView dequeueReusableCellWithIdentifier:@"Cell"];    
Course *temp = [array objectAtIndex:indexPath.row];    
cell.nameLb.text = temp.name;    
cell.hourLb.text = [NSString stringWithFormat:@"%d",temp.hour];    
cell.startTimeLb.text = temp.startTime;    
cell.endTimeLb.text = temp.endTime;    
NSLog(@"End of cellForRowAtIndexPath");    
return cell;    
}

tableView:numberOfRowsInSection:numberOfSectionsInTableView:在我回到具有表视图的视图时被调用。

PS:UIViewController视图里面有表格视图,我在发布我的问题之前搜索了所有 StackOverflow。

编辑:这是我设置委托和数据源的地方

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"Did Appear");
    // Do any additional setup after loading the view.
    self.view.layer.shadowOpacity = 0.75f;
    self.view.layer.shadowRadius = 10.0f;
    self.view.layer.shadowColor= [UIColor blackColor].CGColor;

    if (![self.slidingViewController.underLeftViewController isKindOfClass:[MenuViewController class]])
    {
        self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];
    }
    [self.view addGestureRecognizer:self.slidingViewController.panGesture];

    if (array == nil)
    {
        array = [[NSMutableArray alloc]init];
    }

    table.delegate = self;
    table.dataSource = self;
    [table reloadData];

}

我确实在标题中包含了委托和数据源

@interface MainViewController : UIViewController<UITableViewDataSource , UITableViewDelegate,addDelegate>
4

2 回答 2

4

首先,它不是numberOfRowsAtSectionand numberOfTableView。是numberOfSectionsInTableViewnumberOfRowsInSection

你可以做的事情:

1) NSLog你的numberOfRowsInSection. 请注意,如果它是“0”,那么您cellForRowAtIndexPath将永远不会被调用。

2)如果你使用你的UITableView内部一些UIView,那么你应该添加:

[self.view addSubview:table];

3)不要忘记包括:

@interface yourViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
于 2013-04-23T14:37:08.710 回答
0

一旦检查您是否重新构建了tableviewin ViewWillAppear。有时如果我们设置出框架,CellForRowAtIndexPath将不会调用。

于 2013-04-24T05:27:51.133 回答