UITableView动态内容不会出现

时间:2012-12-14 20:53:39

标签: objective-c ios uitableview uiviewcontroller

我正在将UITableView嵌入到子类UIViewController中。此UITableView使用带有图像和文本的单个动态原型,它们可以根据加载到其中的内容而变化。我遇到的问题是,UITableView上出现的UIViewController完全没有。{1}}。 UITableView本身似乎没有出现。

我为子类IBOutlet中的UITableView创建了UIViewController,如下所示:

@property (weak, nonatomic) IBOutlet UITableView *functionTableView;

正确链接回UITableView

在父viewDidLoad的{​​{1}}方法中,我有以下代码:

UIViewController

我也为该类声明了委托。我正在使用的数据源目前是包含数据对象的self.functionTableView.delegate = self; self.functionTableView.dataSource = self; [self.functionTableView reloadData]; 。我已经实施了NSMutableArrayUITableViewDataSource方法,如下所示:

UITableViewDelegate

#pragma mark - Table view data source delegate - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. NSLog(@"tableView:numberofRowsInSection %u", [[EmulatorModel sharedEmulatorModel].currentFunctionBank count]); return [[EmulatorModel sharedEmulatorModel].currentFunctionBank count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"Updating Cell %d", indexPath.row); NSLog(@"For Function %@", [EmulatorModel sharedEmulatorModel].currentFunctionBank[indexPath.row]); static NSString *CellIdentifier = @"FunctionCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } // Configure the cell... LivioFunction *func = nil; if ([EmulatorModel sharedEmulatorModel].currentFunctionBank[indexPath.row] != [NSNull null]) { func = [EmulatorModel sharedEmulatorModel].currentFunctionBank[indexPath.row]; NSLog(@"Cell Text: %@", func.label); cell.textLabel.text = func.label; NSLog(@"Cell Image %@", func.artwork); cell.imageView.image = func.artwork; } else { cell.textLabel.text = @" "; cell.imageView.image = [UIImage imageNamed:@"HD_fav.png"]; } NSLog(@"cell: %@", cell); return cell; } #pragma mark - Table view delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"Table view row selected: %d", indexPath.row); if ([EmulatorModel sharedEmulatorModel].currentFunctionBank[indexPath.row]) { id fn = nil; fn = ([EmulatorModel sharedEmulatorModel].currentFunctionBank)[indexPath.row]; if (fn && [fn isKindOfClass:[LivioFunction class]]) { LivioFunction *function = (LivioFunction*)fn; if (function.functionID == indexPath.row && function.type == LVCFunctionTypeMenu) { [self resetButtonImages]; [self resetButtonLabels]; } } [LivioConnectLib sendUserSelect:indexPath.row inputType:LVCInputTypeFunction]; } } 正在吐出正确的数据,而我在NSLog's中使用的重新加载数据导致数据源viewDidLoad方法被调用。因为我第一次尝试iOS UI时感到困惑和沮丧。想法?

编辑:请求lldb调试器输出到delegate

po [[UIApp keyWindow] recursiveDescription]

1 个答案:

答案 0 :(得分:2)

从lldb调试器输出:alpha上的UITableView为0。

<UITableView: 0xe97d800; frame = (226 164; 276 338); clipsToBounds = YES; alpha = 0; opaque = NO; autoresize = W+H; layer = <CALayer: 0xdede2c0>; contentOffset: {0, 0}>