2010-03-17 4 views
1

그래서 웹 응용 프로그램을 작성하여 UITableView의 선택 항목에서 전달하는 URL의 내용을 표시합니다. UIWebView 제대로 콘텐츠를로드하는 알고 있기 때문에 어려운 코드를 NSURL로 http://www.google.ca 말할 다음 잘로드 할 때 나는 URL을 제대로 전달할 것입니다 UITableView에서 RSS 피드에서 다시 구문 분석하는 URL을 전달 해요 . 내가 디버거를 시도하고 URL을 밖으로 노력하고 그것을 분석하기 전에 바로 밖으로 나오고있다, 그러나 NSLog를 사용하여 콘솔에 값을 인쇄 할 수 있습니다. 여기 UITableView에서 URL을 전달할 때 UIWebView가로드되지 않습니다.

나는 NSLog 벌금에 URL을 인쇄 할 수
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSLog(@"Url inside Web View Controller - %@", urlToGet); 
    NSURL *url = [NSURL URLWithString:urlToGet]; 

    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 

    [self.webView loadRequest:requestObj]; 
} 

다시 한번 ... 여기 내있는 UIWebView

#import <UIKit/UIKit.h> 


@interface ReadFeedWebViewController : UIViewController 
{ 
    NSString *urlToGet; 
    IBOutlet UIWebView *webView; 
} 

@property(nonatomic, retain) IBOutlet UIWebView *webView; 
@property(nonatomic, retain) NSString *urlToGet; 

@end 

을 가지고 내 구현의의 viewDidLoad 방법에 대한 코드의 내 UIViewController에있는 코드입니다 URL을 NSURL 객체에 하드 코딩하면 UIWebView에서 제대로로드됩니다. 내가 제대로 전달되는 것 알고 extendedView 뷰 컨트롤러에 NSLog를 사용하여 값을 출력 할 수 있기 때문에 나는, 그러나 내있는 UITableViewController의 값 ...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    ReadFeedWebViewController *extendedView = [[ReadFeedWebViewController alloc] init]; 

    int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1]; 
    extendedView.urlToGet = [[stories objectAtIndex: storyIndex] objectForKey:@"link"]; 
    //NSLog([[stories objectAtIndex: storyIndex] objectForKey:@"summary"]); 
    NSLog([[stories objectAtIndex: storyIndex] objectForKey:@"link"]); 

    [self.navigationController pushViewController:extendedView animated:YES]; 

    [extendedView release]; 
} 

을하고 있어요 곳 여기입니다. 건배

답변

5

urlToGet은 viewDidLoad 메서드의 ReadFeedWebViewController에 null입니다.이 메서드를 호출 할 때이 변수가 아직 영향을받지 않기 때문입니다. viewDidLoad는 ViewController의 초기화가 완료 될 때 호출됩니다. 나는 당신이 그와 같은 viewWillAppear 방법에서 그것을 호출해야합니다

- (void)viewWillAppear:(BOOL)animated { 
    NSURL *url = [NSURL URLWithString:urlToGet]; 

    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 

    [self.webView loadRequest:requestObj]; 
} 
1

또한, 코드에서 메모리 누수가있다. 내비게이션 컨트롤러에 밀어 넣은 후 extendedView을 놓아야합니다.

ReadFeedWebViewController *extendedView = [ReadFeedWebViewController new]; 
if (extendedView != nil) { 
    ... setup extendedView here ... 
    [self.navigationController pushViewController:extendedView animated:YES]; 
    [extendedView release]; 
} 
0
Try this 
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData 
             timeoutInterval:20.0]; 
관련 문제