0

当我运行应用程序以显示 UITableView 时,结果什么也没有。它不会运行:

- (NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section {} 

- (UITableViewCell *)tableView:(UITableView *)tableView 
cellForRowAtIndexPath:(NSIndexPath *)indexPath {}
  1. 开发环境为IOS SDK 6.1。/模拟器版本是6.0。
  2. 我在情节提要中使用了表格视图控制器。
  3. 我创建了一个名为“RetrieveDataFromDBTableVC”的类,并将表视图控制器的自定义类设置为“RetrieveDataFromDBTableVC”。 在此处输入图像描述

  4. 我认为委托和数据源已经为我设置好了,所以我不需要再次设置对吗?(委托和数据源的连接是Table View)。

在此处输入图像描述

  1. 在“RetrieveDataFromDBTableVC”类中,我定义如下:

      - (void)viewDidLoad
      {
        [super viewDidLoad];
        [self retrieveData];
      }
    
      -(void)retrieveData
      {
          NSURL * url = [NSURL URLWithString:getDataURL];
          NSData * data = [NSData dataWithContentsOfURL:url];
    
          citiesArray = [[NSMutableArray alloc]init];
    
          // Assign data
          NSString * cID = @"aa";
          ...
    
          cities * myCity = [[cities alloc]initWithCityID:cID andCityID:cName andCityState:cState andCityPopulation:cPopulation andCityCountry:cCountry];
    
          // Add city object to our cities array
          [citiesArray addObject:myCity];
    
          // Create a myTableView outlet for this table view to reload data 
          // self.tableView is also correct right?
          [self.myTableView reloadData];
       }
    
       - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:    (NSInteger)section
       {
          // It will not run this function !!
          return [citiesArray count];
       }
    
       // It will not go into this function either !!
       - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
      {
         // Set the identifier name in UITableViewCell also
         static NSString *CellIdentifier = @"cities";
         UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    
         // Retrieve the current city object for use with this indexPath.row
        cities * currentCity = [citiesArray objectAtIndex:indexPath.row];
    
        cell.textLabel.text = currentCity.cityName;
    
        return cell;
      }
    

我认为连接是问题,但我不知道如何解决。谢谢 !!

4

2 回答 2

0

确保从以下位置更改文件的这一行:(在 .h 文件中)

@interface YourClass : something

至:

@interface YourClass : something <UITableViewDataSource, UITableViewDelegate>

如果你还没有。

于 2013-08-17T00:46:25.610 回答
0

除非它在 ​​IB 中被绘制为 UITableViewController 的实例,并且是 UITableViewController 的子类,否则委托和数据源不会自动连接。在 IB 或 viewDidLoad 上的代码中显式连接它们。

于 2013-08-17T03:37:10.043 回答