При выборе строки в таблице она переключается на пустой экран - PullRequest
3 голосов
/ 29 января 2012

в части моего приложения (раскадровки) у меня есть табличное представление с различными строками, и когда я выбираю строку, должен отображаться HTML-файл.Вместо этого, когда я выбираю строку, я получаю пустой экран.

Я думал, что мне нужен другой контроллер представления после контроллера просмотра таблицы, но у меня возникает та же проблема, есть ли у меня один или нет.

В файле .m моего контроллера таблицы есть следующий код:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

articleIndex = indexPath.row;

WebView *selectedArticle = [[WebView alloc] initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:selectedArticle animated:YES];
[selectedArticle release];

Это позволяет мне выбрать строку и экран меняетсяв пустой, вместо загрузки соответствующего HTML-файла.

У меня в папке ресурсов есть файлы .h и .m следующим образом:

webView.h

#import <UIKit/UIKit.h>
#import "globals.h"
@interface WebView : UIViewController{
NSArray *articleNames;
IBOutlet UIWebView *webView;
}
@property(nonatomic, retain)IBOutlet UIWebView *webView;
@end

webView.m

#import "WebView.h"
@implementation WebView
@synthesize webView;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
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];

articleNames = [[NSArray arrayWithObjects:
                 @"chapter1",
                 @"chapter2",
                 @"chapter3",
                 @"chapter4",
                 @"chapter5",
                 @"chapter6",
                 nil] retain];

NSString *chapterName = [[NSString alloc] initWithString:[articleNames objectAtIndex:articleIndex]];

NSString *path = [[NSBundle mainBundle] pathForResource:chapterName ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:path];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];
[webView loadRequest:urlRequest];

[chapterName release];

}

- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return YES;
}

@end

Я не вижу, что я сделал не так, совет?Я не уверен, как получить HTML-файлы для отображения или где мне нужно внести изменения, чтобы разрешить это.Если я удаляю файлы HTML из проекта, приложение вылетает, поэтому оно определенно загружается, но по какой-то причине не отображается ...

1 Ответ

0 голосов
/ 08 февраля 2012

Ну, во-первых, где находится "articleIndex"? Я вижу, вы установили его в вашем tableViewController, но это не webView.h или webView.m. Я бы предложил сначала добавить в NSLog

NSURL *url = [NSURL fileURLWithPath:path];
NSLog(@"Article URL:%@", url);

Это позволит вам увидеть, правильно ли сначала указан URL. Во-вторых, похоже, что вы подключили свой UIWebView к конструктору интерфейсов, поэтому убедитесь, что веб-интерфейс подключен правильно. Вы также можете проверить покупку через WebView, используя:

    NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString: @"http://www.apple.com"]];

И посмотрите, загружается ли apple.com. Если это так, то вы знаете, что ваша проблема связана с вашими HTML-файлами или путями к ним.

...