在我的应用中,为什么Splash屏幕需要很长时间才能启动。任何人都请告诉我。
先谢谢:) .h文件代码是:
@interface RootViewController : UITableViewController<NSXMLParserDelegate> {
UIButton *facebookbutton;
UIButton *twitterbutton;
UIButton *youtubebutton;
UIImageView *backgroundView;
UIImageView *cellImage;
UIView *backView;
UILabel *contactuslabel1;
UILabel *newslabel1;
UILabel *dirLabel;
UILabel *abtLabel;
UILabel *faqLabel;
UILabel *evtLabel;
UIImageView *countImg;
UILabel *cntLabel;
UILabel *alrtLabel;
UIImageView *alrtCountImg;
UILabel *alrtCountLabel;
NSURLConnection *xmlConnection;
NSMutableString *xmlValue;
NSMutableDictionary *currentItem;
NSMutableData *responseData;
NSMutableArray *xmlParseArray;
NSString *urlString;
NSString *theXML;
NSString *alertString;
NSString *eventString;
UIAlertView *networkAlert;
@property(nonatomic, retain)UIImageView *cellImage;
@property(nonatomic, retain)UIView *backView;
@property(nonatomic,retain)NSURLConnection *xmlConnection;
@property(nonatomic,retain)NSMutableString *xmlValue;
@property(nonatomic,retain)NSMutableDictionary *currentItem;
@property(nonatomic,retain)NSMutableData *responseData;
@property(nonatomic,retain)NSMutableArray *xmlParseArray;
@property(nonatomic,retain) NSString *urlString;
********************************************************************
.m文件代码是
@implementation RootViewController
@synthesize cellImage,backView;
@synthesize responseData,xmlValue,xmlConnection,xmlParseArray,currentItem,urlString;
// Check Network Reachability Connection---------
- (void) showNetWorkAlert {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
networkAlert = [[UIAlertView alloc] initWithTitle:@"No Internet Connection" message:@"This app require an internet connection via wifi or cellular network to work."
delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Retry", nil];
[networkAlert show];
[networkAlert release];
}
#pragma mark To Check Network Connection.
- (BOOL) currentNetworkStatus {
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
BOOL connected;
const char *host = "www.apple.com";
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, host);
SCNetworkReachabilityFlags flags;
connected = SCNetworkReachabilityGetFlags(reachability, &flags);
BOOL isConnected = NO;
isConnected = connected && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
CFRelease(reachability);
if(!isConnected) {
// sleep(1);
[self showNetWorkAlert];
}
else
return isConnected;
return isConnected;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self currentNetworkStatus];
self.navigationController.navigationBarHidden = NO;
self.navigationController.navigationBar.tintColor = [UIColor blackColor];
self.title = @"Association's Name";
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]];
self.tableView.separatorColor = [UIColor clearColor];
self.tableView.userInteractionEnabled=YES;
self.tableView.scrollEnabled = YES;
self.tableView.rowHeight = 49.0;
facebookbutton=[UIButton buttonWithType:UIButtonTypeCustom];
facebookbutton.frame = CGRectMake(85, 359, 48, 48);
[facebookbutton setBackgroundColor:[UIColor clearColor]];
[facebookbutton setImage:[UIImage imageNamed:@"facebook_icon.png"] forState:UIControlStateNormal];
[facebookbutton addTarget:self action:@selector(facebookbuttonAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:facebookbutton];
youtubebutton=[UIButton buttonWithType:UIButtonTypeCustom];
youtubebutton.frame = CGRectMake(133, 359, 48, 48);
[youtubebutton setBackgroundColor:[UIColor clearColor]];
[youtubebutton setImage:[UIImage imageNamed:@"youtube.png"] forState:UIControlStateNormal];
[youtubebutton addTarget:self action:@selector(youtubebuttonAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:youtubebutton];
twitterbutton=[UIButton buttonWithType:UIButtonTypeCustom];
twitterbutton.frame = CGRectMake(180, 359, 48, 48);
[twitterbutton setBackgroundColor:[UIColor clearColor]];
[twitterbutton setImage:[UIImage imageNamed:@"twitter.png"] forState:UIControlStateNormal];
[twitterbutton addTarget:self action:@selector(twitterbuttonAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:twitterbutton];
self.urlString = @"http://alpha.cfcdi.org/eassociation/web-service/init.xml";
[self parseData];
// [self performSelector:@selector(parseData) withObject:self afterDelay:0.1f];
}
-(void)facebookbuttonAction{
FaceBookViewContoller *faceBookViewContoller = [[FaceBookViewContoller alloc]init];
[self.navigationController pushViewController:faceBookViewContoller animated:YES];
[faceBookViewContoller release];
}
- (void)twitterbuttonAction{
TwitterViewController *twitterViewController = [[TwitterViewController alloc]init];
[self.navigationController pushViewController:twitterViewController animated:YES];
[twitterViewController release];
}
-(void)youtubebuttonAction{
YouTubeViewController *youTubeViewController = [[YouTubeViewController alloc]init];
[self.navigationController pushViewController:youTubeViewController animated:YES];
[youTubeViewController release];
}
//...................Load URL String For Connection................
-(void)parseData
{
xmlConnection = [[NSURLConnection alloc]
initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@", urlString]]] delegate:self];
if (xmlConnection == nil){
NSLog(@"Connection Error");
}
else{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
responseData = [[NSMutableData alloc] retain];
xmlValue = [[NSMutableString alloc] init];
currentItem = [[NSMutableDictionary alloc] init];
xmlParseArray = [[NSMutableArray alloc] init];
}
}
#pragma mark URLConnection delegate methods
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[responseData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[responseData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
NSLog(@"error :%@",error);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
theXML = [[NSString alloc] initWithBytes: [responseData mutableBytes] length:[responseData length] encoding:NSUTF8StringEncoding];
NSLog(@"theXML :%@",theXML);
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:responseData];
[parser setDelegate:self];
[parser parse];
}
//---------------- NSXML Parser Delegate---------------------------------
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"Init"]){
}
[xmlValue setString:@""];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([elementName isEqualToString:@"alerts"]) {
[currentItem setValue:[NSString stringWithString:xmlValue] forKey:elementName];
}else if ([elementName isEqualToString:@"events"]) {
[currentItem setValue:[NSString stringWithString:xmlValue] forKey:elementName];
}else if ([elementName isEqualToString:@"Init"]) {
[self.xmlParseArray addObject:[NSDictionary dictionaryWithDictionary:currentItem]];
}
NSLog(@"xmlArray is : %@",xmlParseArray);
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
[xmlValue appendString:string];
}
// Customize the number of sections in the table view.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 7;
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
// Configure the cell.
cellImage = [[UIImageView alloc]initWithFrame:CGRectMake(12,6,303,46)];
cellImage.backgroundColor = [UIColor clearColor];
cellImage.image = [UIImage imageNamed:@"first_cell.png"];
[cell addSubview:cellImage];
cell.backgroundColor = [UIColor clearColor];
// NSLog(@"xmlArray At CellForRowAtIndexPath is : %@",xmlParseArray);
if(indexPath.row == 0)
{
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
UILabel *aboutlabel = [[UILabel alloc]initWithFrame:CGRectMake(20,12,75,25)];
aboutlabel.backgroundColor = [UIColor clearColor];
aboutlabel.text = @"About Us";
aboutlabel.textAlignment = UITextAlignmentLeft;
[cell addSubview:aboutlabel];
[aboutlabel release];
}
if(indexPath.row == 1)
{
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
UILabel *label11 = [[UILabel alloc]initWithFrame:CGRectMake(20,12,75,25)];
label11.backgroundColor = [UIColor clearColor];
label11.text = @"Directory";
label11.textAlignment = UITextAlignmentLeft;
[cell addSubview:label11];
[label11 release];
}
if(indexPath.row == 2)
{
UILabel *alertlabel = [[UILabel alloc]initWithFrame:CGRectMake(20,13,150,25)];
alertlabel.backgroundColor = [UIColor clearColor];
alertlabel.text = @"Events";
alertlabel.textAlignment = UITextAlignmentLeft;
[cell addSubview:alertlabel];
UIImageView *cellImg3 = [[UIImageView alloc]initWithFrame:CGRectMake(265,14,32,23)];
cellImg3.image = [UIImage imageNamed:@"count_bg.png"];
cellImg3.backgroundColor = [UIColor clearColor];
[cell addSubview:cellImg3];
UILabel *label6 = [[UILabel alloc]initWithFrame:CGRectMake(263,10,36,26)];
label6.backgroundColor = [UIColor clearColor];
label6.text = [[self.xmlParseArray objectAtIndex:1] objectForKey:@"events"];
label6.textAlignment = UITextAlignmentCenter;
label6.textColor = [UIColor whiteColor];
[cell addSubview:label6];
[alertlabel release];
[cellImg3 release];
}
if(indexPath.row == 3)
{
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
UILabel *newslabel = [[UILabel alloc]initWithFrame:CGRectMake(20,13,150,25)];
newslabel.backgroundColor = [UIColor clearColor];
newslabel.text = @"News";
newslabel.textAlignment = UITextAlignmentLeft;
[cell addSubview:newslabel];
[newslabel release];
}
if(indexPath.row == 4)
{
UILabel *eventlabel = [[UILabel alloc]initWithFrame:CGRectMake(20,12,150,25)];
eventlabel.backgroundColor = [UIColor clearColor];
eventlabel.text = @"Alerts";
eventlabel.textAlignment = UITextAlignmentLeft;
[cell addSubview:eventlabel];
UIImageView *cellImg4 = [[UIImageView alloc]initWithFrame:CGRectMake(265,14,32,23)];
cellImg4.image = [UIImage imageNamed:@"count_bg.png"];
cellImg4.backgroundColor = [UIColor clearColor];
[cell addSubview:cellImg4];
UILabel *label5 = [[UILabel alloc]initWithFrame:CGRectMake(263,10,36,26)];
label5.backgroundColor = [UIColor clearColor];
label5.text = [[self.xmlParseArray objectAtIndex:0] objectForKey:@"alerts"];
label5.textAlignment = UITextAlignmentCenter;
label5.textColor = [UIColor whiteColor];
[cell addSubview:label5];
[eventlabel release];
[cellImg4 release];
[label5 release];
}
if(indexPath.row == 5)
{
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
UILabel *askuslabel = [[UILabel alloc]initWithFrame:CGRectMake(20,14,150,25)];
askuslabel.backgroundColor = [UIColor clearColor];
askuslabel.text = @"FAQ / Ask Us";
askuslabel.textAlignment = UITextAlignmentLeft;
[cell addSubview:askuslabel];
[askuslabel release];
}
if(indexPath.row == 6)
{
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
UILabel *contactuslabel = [[UILabel alloc]initWithFrame:CGRectMake(20,14,150,25)];
contactuslabel.backgroundColor = [UIColor clearColor];
contactuslabel.text = @"Contact Us";
contactuslabel.textAlignment = UITextAlignmentLeft;
[cell addSubview:contactuslabel];
[contactuslabel release];
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
backView = [[UIView alloc] initWithFrame:CGRectMake(5,6,300,39)];
backView.backgroundColor = [UIColor lightGrayColor]; // blueColor
[cell addSubview:backView];
self.backView.hidden = NO;
if(indexPath.row == 0){
abtLabel = [[UILabel alloc]initWithFrame:CGRectMake(20,12,75,25)];
abtLabel.backgroundColor = [UIColor clearColor];
abtLabel.text = @"About Us";
abtLabel.textAlignment = UITextAlignmentLeft;
[cell addSubview:abtLabel];
AboutUsViewController *aboutUsViewController = [[AboutUsViewController alloc]init];
[self.navigationController pushViewController:aboutUsViewController animated:YES];
[aboutUsViewController release];
[abtLabel release];
}
if(indexPath.row == 1){
dirLabel = [[UILabel alloc]initWithFrame:CGRectMake(20,12,75,25)];
dirLabel.backgroundColor = [UIColor clearColor];
dirLabel.text = @"Directory";
dirLabel.textAlignment = UITextAlignmentLeft;
[cell addSubview:dirLabel];
DirectoryListViewController *directoryListViewController = [[DirectoryListViewController alloc]init];
[self.navigationController pushViewController:directoryListViewController animated:YES];
[directoryListViewController release];
[dirLabel release];
}
if(indexPath.row == 2){
if(![self currentNetworkStatus])
{
UIAlertView *eNetAlert = [[UIAlertView alloc]initWithTitle:@"No Internet Connection" message:@"This app require an internet connection via wifi or cellular network to work." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Retry", nil];
[eNetAlert show];
[eNetAlert release];
self.backView.hidden = YES;
}
else {
alrtLabel = [[UILabel alloc]initWithFrame:CGRectMake(20,13,150,25)];
alrtLabel.backgroundColor = [UIColor clearColor];
alrtLabel.text = @"Events";
alrtLabel.textAlignment = UITextAlignmentLeft;
[cell addSubview:alrtLabel];
alrtCountImg = [[UIImageView alloc]initWithFrame:CGRectMake(265,14,32,23)];
alrtCountImg.image = [UIImage imageNamed:@"count_bg.png"];
alrtCountImg.backgroundColor = [UIColor clearColor];
[cell addSubview:alrtCountImg];
alrtCountLabel = [[UILabel alloc]initWithFrame:CGRectMake(263,10,36,26)];
alrtCountLabel.backgroundColor = [UIColor clearColor];
alrtCountLabel.text = [[self.xmlParseArray objectAtIndex:1] objectForKey:@"events"];
NSLog(@"alrtCountLabel.text : %@",alrtCountLabel.text);
alrtCountLabel.textAlignment = UITextAlignmentCenter;
alrtCountLabel.textColor = [UIColor whiteColor];
[cell addSubview:alrtCountLabel];
EventViewController *eventViewController = [[EventViewController alloc]init];
[self.navigationController pushViewController:eventViewController animated:YES];
[eventViewController release];
[alrtLabel release];
[alrtCountImg release];
[alrtCountLabel release];
}
}
if(indexPath.row == 3)
{
newslabel1 = [[UILabel alloc]initWithFrame:CGRectMake(20,13,150,25)];
newslabel1.backgroundColor = [UIColor clearColor];
newslabel1.text = @"News";
newslabel1.textAlignment = UITextAlignmentLeft;
[cell addSubview:newslabel1];
NewsViewController *newsViewController = [[NewsViewController alloc]init];
[self.navigationController pushViewController:newsViewController animated:YES];
[newsViewController release];
[newslabel1 release];
}
if(indexPath.row == 4){
if(![self currentNetworkStatus])
{
UIAlertView *eNetAlert1 = [[UIAlertView alloc]initWithTitle:@"No Internet Connection" message:@"This app require an internet connection via wifi or cellular network to work." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Retry", nil];
[eNetAlert1 show];
[eNetAlert1 release];
self.backView.hidden = YES;
}
else {
evtLabel = [[UILabel alloc]initWithFrame:CGRectMake(20,12,150,25)];
evtLabel.backgroundColor = [UIColor clearColor];
evtLabel.text = @"Alerts";
evtLabel.textAlignment = UITextAlignmentLeft;
[cell addSubview:evtLabel];
countImg = [[UIImageView alloc]initWithFrame:CGRectMake(265,14,32,23)];
countImg.image = [UIImage imageNamed:@"count_bg.png"];
countImg.backgroundColor = [UIColor clearColor];
[cell addSubview:countImg];
cntLabel = [[UILabel alloc]initWithFrame:CGRectMake(263,10,36,26)];
cntLabel.backgroundColor = [UIColor clearColor];
cntLabel.text = [[self.xmlParseArray objectAtIndex:0] objectForKey:@"alerts"];
NSLog(@"cntLabel.text : %@",cntLabel.text);
cntLabel.textAlignment = UITextAlignmentCenter;
cntLabel.textColor = [UIColor whiteColor];
[cell addSubview:cntLabel];
AlertViewController *alertViewController = [[AlertViewController alloc]init];
[self.navigationController pushViewController:alertViewController animated:YES];
[alertViewController release];
[evtLabel release];
[countImg release];
[cntLabel release];
}
}
if(indexPath.row == 5){
faqLabel = [[UILabel alloc]initWithFrame:CGRectMake(20,14,150,25)];
faqLabel.backgroundColor = [UIColor clearColor];
faqLabel.text = @"FAQ / Ask Us";
faqLabel.textAlignment = UITextAlignmentLeft;
[cell addSubview:faqLabel];
AskOneViewController *askOneViewController = [[AskOneViewController alloc]init];
[self.navigationController pushViewController:askOneViewController animated:YES];
[askOneViewController release];
[faqLabel release];
}
if(indexPath.row == 6){
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
contactuslabel1 = [[UILabel alloc]initWithFrame:CGRectMake(20,14,150,25)];
contactuslabel1.backgroundColor = [UIColor clearColor];
contactuslabel1.text = @"Contact Us";
contactuslabel1.textAlignment = UITextAlignmentLeft;
[cell addSubview:contactuslabel1];
ContactUsViewController *contactUsViewController = [[ContactUsViewController alloc]init];
[self.navigationController pushViewController:contactUsViewController animated:YES];
[contactUsViewController release];
[contactuslabel1 release];
}
}
/*- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}*/
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
self.cellImage.hidden = NO;
self.backView.hidden = YES;
contactuslabel1.hidden = YES;
newslabel1.hidden = YES;
dirLabel.hidden = YES;
abtLabel.hidden = YES;
faqLabel.hidden = YES;
evtLabel.hidden =YES;
countImg.hidden =YES;
cntLabel.hidden = YES;
// alrtLabel.hidden = YES;
alrtCountImg.hidden =YES;
alrtCountLabel.hidden = YES;
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Relinquish ownership any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
// For example: self.myOutlet = nil;
}
- (void)dealloc
{
[facebookbutton release];
[twitterbutton release];
[youtubebutton release];
[super dealloc];
}
@end
-(void)parseData;
@end
答案 0 :(得分:3)
这不是启动画面需要这么长时间,而是加载并初始化您的应用程序(直到它到达您的应用程序最终可以显示其第一个视图的位置)。