У меня есть приложение с базой данных sqlite3.В консоли я вижу, что приложение может читать данные с него, но я не могу вывести их на экран.Это просто белый экран, я не знаю почему.Вот мой код: файл AppDelegate:
#import <UIKit/UIKit.h>
@interface FailedBanksAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
UINavigationController *_navController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navController;
@end
И .m часть:
#import "FailedBanksAppDelegate.h"
#import "FailedBankDatabase.h"
#import "FailedBankInfo.h"
@implementation FailedBanksAppDelegate
@synthesize navController = _navController;
@synthesize window = _window;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
NSArray *failedBankInfos = [FailedBankDatabase database].failedBankInfos;
for (FailedBankInfo *info in failedBankInfos)
{
NSLog(@"%d: %@, %@, %@", info.uniqueId, info.name, info.city, info.state);
}
[self.window addSubview:_navController.view];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
- (void)dealloc {
self.navController = nil;
}
@end
Я следую этому уроку, http://www.raywenderlich.com/913/sqlite-101-for-iphone-developers-making-our-app, и сделал именно то, что сделал автор, нопросто белый экран, даже без рядов!И да, я подключил розетки ..
В консоли я вижу это: 2012-03-18 11: 15: 56.186 Doctorina [3091: f803] 230: First Alliance Bank & Trust Co., Манчестер,NH 2012-03-18 11: 15: 56.186 Doctorina [3091: f803] 231: Национальный государственный банк метрополии, Метрополис, IL 2012-03-18 11: 15: 56.187 Doctorina [3091: f803] 232:
Прямо перед тем, как я написал это, я получил сообщение в консоли - приложение ожидало контроллер корневого представления, затем я изменил окно на self.window, и сообщение исчезло.Тем не менее это был белый экран ..
Я добавляю этот код, как вы сказали:
UITableViewController *rootController = [[UITableViewController alloc] initWithNibName:@"FailedBanksListViewController" bundle:nil];
_navController = [[UINavigationController alloc] initWithRootViewController:rootController];
Но теперь он говорит - программа получает сообщение SIGABRT.
Таммои файлы FailedBanksListViewController:
.h файл:
#import <UIKit/UIKit.h>
@interface FailedBanksListViewController : UITableViewController {
NSArray *_failedBankInfos;
}
@property (nonatomic, retain) NSArray *failedBankInfos;
@end
.m файл:
#import "FailedBanksListViewController.h"
#import "FailedBankDatabase.h"
#import "FailedBankInfo.h"
@implementation FailedBanksListViewController
@synthesize failedBankInfos = _failedBankInfos;
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
self.failedBankInfos = [FailedBankDatabase database].failedBankInfos;
self.title = @"Failed Banks";
}
- (void)viewDidUnload
{
[super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 0;
}
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
{
return [_failedBankInfos count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier];
}
// Set up the cell...
FailedBankInfo *info = [_failedBankInfos objectAtIndex:indexPath.row];
cell.textLabel.text = info.name;
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@, %@",
info.city, info.state];
return cell;
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.
/*
<#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
*/
}
@end