CellForRowAtIndexPath不被调用
我正在写一个应用程序的帽子有很多的意见,我用滑动视图库( 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
,里面有表格视图,在发布我的问题之前我search了所有的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>
首先,它不是numberOfRowsAtSection
和numberOfTableView
。 它是numberOfSectionsInTableView
和numberOfRowsInSection
。
你可以做的事情:
1) NSLog
你的numberOfRowsInSection
。 请注意,如果它是“0”,那么你的cellForRowAtIndexPath
永远不会被调用。
2)如果你在一些UIView
里使用你的UITableView
那么你应该添加:
[self.view addSubview:table];
3)不要忘记包括:
@interface yourViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
一旦检查你ViewWillAppear
的tableview
。 有时,如果我们设置了框架, CellForRowAtIndexPath
将不会调用。