2014-07-23 40 views
0

我試圖創建一個非常簡單的應用程序,而不是第一次使用故事板。以編程方式創建的表格中無法加載數據查看

我只是試圖顯示一個tableView作爲我的第一個屏幕,一旦應用程序加載。我創建一個UIView類,然後在viewDidLoad方法中創建一個表視圖。

在我的委託類中,我創建了我的類的一個實例,然後將其設置爲我的根視圖控制器。

當我運行應用程序時,tableView顯示,但單元格不顯示它們上的數字。我一直在閱讀關於此的蘋果文檔,但迄今尚未找到解決方案。它可能非常小,但我似乎無法弄清楚。

正如你所看到的,我創建了一個數組,填充非常簡單的字符串,只是數字。我希望每個數字顯示在表格視圖的單元格中,但是當tableview加載單元格時是空白的。

#import "NumbersViewController.h" 

@interface NumbersViewController() 

@end 

@implementation NumbersViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UITableView *tableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame] style:UITableViewStylePlain]; 
    tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth; 
    tableView.delegate = self; 
    tableView.dataSource = self; 
    [tableView reloadData]; 

    self.view = tableView; 

    self.numArray = [NSMutableArray array]; 
    [self.numArray addObject:@"1"]; 
    [self.numArray addObject:@"2"]; 
    [self.numArray addObject:@"3"]; 
    [self.numArray addObject:@"4"]; 
    [self.numArray addObject:@"5"]; 
    [self.numArray addObject:@"6"]; 
    [self.numArray addObject:@"7"]; 
    [self.numArray addObject:@"8"]; 
    [self.numArray addObject:@"9"]; 



    // Do any additional setup after loading the view. 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    // Number of rows is the number of time zones in the region for the specified section. 

    return [self.numArray count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *MyIdentifier = @"MyReuseIdentifier"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier]; 
    } 

    NSString *number = [self.numArray objectAtIndex:indexPath.row]; 
    cell.textLabel.text = number; 
    return cell; 
} 



@end 
+0

僅供參考 - 不需要在'viewDidLoad'方法的表中調用'reloadData'。順便說一句 - 爲什麼你不只是使用'UITableViewController'?如果您的表格視圖是全屏大小的,那將是更好的選擇。 – rmaddy

+0

@rmaddy當表視圖爲全屏大小時,實際上認爲使用UIViewController來代替'UITableViewController'實際上是不好的做法?我選擇'UIViewControllers'來防止UI/UX需要改變,而'tableview'不再是屏幕大小。只是好奇,如果這實際上是皺眉。 – LyricalPanda

+0

使用'UIViewController'沒什麼問題。如果唯一的視圖是表視圖,使用'UITableViewController'會更容易。 – rmaddy

回答

2

您添加數據後,設定值到數組後,您reloadData

//Delegate methods called 
[tableView reloadData]; 

self.view = tableView; 

// data added 
self.numArray = [NSMutableArray array]; 
[self.numArray addObject:@"1"]; 

解決方案 移動numArray初始化&播種碼以上reloadData

+0

如果您提供瞭解決方案,而不是指出問題,這將是更好的答案。 – rmaddy

+0

啊!謝謝你我太愚蠢了。 – mufc

+0

@rmaddy我認爲解決方案很明顯?製作一些示例數據,然後'reloadData'?:) –

0

調用表刷新

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UITableView *tableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame] style:UITableViewStylePlain]; 
    tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth; 
    tableView.delegate = self; 
    tableView.dataSource = self; 

    self.view = tableView; 

    self.numArray = [NSMutableArray array]; 
    [self.numArray addObject:@"1"]; 
    [self.numArray addObject:@"2"]; 
    [self.numArray addObject:@"3"]; 
    [self.numArray addObject:@"4"]; 
    [self.numArray addObject:@"5"]; 
    [self.numArray addObject:@"6"]; 
    [self.numArray addObject:@"7"]; 
    [self.numArray addObject:@"8"]; 
    [self.numArray addObject:@"9"]; 

    [tableView reloadData]; 

} 
相關問題