我試圖創建一個非常簡單的應用程序,而不是第一次使用故事板。以編程方式創建的表格中無法加載數據查看
我只是試圖顯示一個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
僅供參考 - 不需要在'viewDidLoad'方法的表中調用'reloadData'。順便說一句 - 爲什麼你不只是使用'UITableViewController'?如果您的表格視圖是全屏大小的,那將是更好的選擇。 – rmaddy
@rmaddy當表視圖爲全屏大小時,實際上認爲使用UIViewController來代替'UITableViewController'實際上是不好的做法?我選擇'UIViewControllers'來防止UI/UX需要改變,而'tableview'不再是屏幕大小。只是好奇,如果這實際上是皺眉。 – LyricalPanda
使用'UIViewController'沒什麼問題。如果唯一的視圖是表視圖,使用'UITableViewController'會更容易。 – rmaddy