2013-06-15 7 views
0

Я работаю над RSS-приложением, и в своем последнем представлении (tableView) я хотел бы использовать cell.detailTextlabel для вызова WebViewController и открытия связанной статьи в Safari.TableViewCell - DetailtextLabel для вызова WebViewController

На самом деле я не знаю, если это лучший способ, но мне нужно иметь это «Подробнее», чтобы открыть всю статью.

В конце моего третьего раздела (прилагаемого изображения) я вставил «Подробнее» - detailTextLabel.text = @ «Подробнее» - но я не знаю, как связаться с WebViewController и передать правильный URL.

Поиск по сети, я нашел этот пример, чтобы открыть в Safari:

**WebViewController.h** 

#import <UIKit/UIKit.h> 

@interface WebViewController : UIViewController 

@property (strong, nonatomic) NSString *url; 
@property (strong, nonatomic) UIWebView *webView; 

- (id)initWithURL:(NSString *)postURL title:(NSString *)postTitle; 

@end 


**WebViewController.m** 

    @implementation WebViewController 
    @synthesize url = _url, webView = _webView; 

- (id)initWithURL:(NSString *)postURL title:(NSString *)postTitle 
{ 
    self = [super init]; 
    if (self) { 
     _url = postURL; 
     self.title = postTitle; 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.url = [self.url stringByTrimmingCharactersInSet:[NSCharacterSet  whitespaceAndNewlineCharacterSet]]; 
    NSURL *newURL = [NSURL URLWithString:[self.url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 

// Do any additional setup after loading the view. 
_webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
[self.view addSubview:self.webView]; 
[self.webView loadRequest:[NSURLRequest requestWithURL:newURL]]; 
} 

- (void)viewDidAppear:(BOOL)animated { 
} 

- (void)viewDidUnload 
{ 
[super viewDidUnload]; 
// Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

@end 

Спасибо заранее.

enter image description here

+0

самым простым способом, вы можете попробовать положить пользовательскую кнопку с названием Read More в ячейки 'contentView' и вызвать WebViewController на этом мероприятии. – Zen

+0

Как вы упомянули, чтобы положить кнопку в нужное место, я могу использовать CGRectMake? Спасибо за ваше время! – Edward

+0

Я отредактировал ответ, проверьте это. – Zen

ответ

0

Вы можете добавить экземпляр пользовательского UIButton в Tableview ячейке и пометить его с indexPath.row или indexPath.section согласно вашей структуре. В действии кнопки получите тег отправителя и получите точный URL-адрес из вашего массива dataSource и вызовите WenViewController с этим URL-адресом. Вы можете добавить кнопку в содержимое ячейки cellView с нужным фреймом. Для например

CGRect cellFrame = cell.contentView.frame; 
UIButton *readMore = [[UIButton alloc] 
        initWithFrame:CGRectMake(cellFrame.origin.x+20, cellFrame.origin.y+cellFrame.size.height - yourButtonHeight -10, yourButtonWidth, yourButtonHeight)]; 
[readMore addTarget:self action:@selector(openWebView:) forControlEvents:UIControlEventTouchUpInside]; 
[readMore setTitle:@"Read More" forState:UIControlStateNormal]; 
[readMore setTag:indexPath.row]; 
[cell.contentView addSubview:readMore]; 
// Release readMore button if not using ARC 

, а затем сделать метод

-(void)openWebView:(UIButton*)sender{ 
     int tag = sender.tag; 
     // Get URL from array using tag as index 
} 
+0

Вместо прохода indexPath.row в «setTag», я могу передать одно свойство другого класса, который захватит адрес, переданный в другой таблицеView by didSelectRowAtIndexPath? Спасибо – Edward

+0

@Edward Да, или вы можете создать подкласс 'UIButton', чтобы удерживать URL-адрес для вас как свойство и получить к нему доступ, получив это свойство. Вы можете принять это как ответ, если это вам помогло. – Zen

+0

Спасибо большое чувак! – Edward

Смежные вопросы