Я работаю над приложением, которое читает RSS-каналы и выбирает определенные носители.После этого пользователь будет перенаправлен на веб-просмотр, который воспроизводит выбранные медиа.У меня уже есть веб-представление, и я могу получить доступ к URL.Я также могу открыть файл в Safari, но мне нужно открыть его в приложении.То, что у меня есть, перечислено ниже.
Мне нужна помощь, чтобы вывести медиа в веб-просмотр.Спасибо за вашу помощь!
if (indexPath.section == SectionHeader && indexPath.row == SectionHeaderEnclosure) {
if (item.enclosures) {
for (NSDictionary *dict in item.enclosures){
NSString *url = [dict objectForKey:@"url"];
NSLog(@" url is : %@",url);
//EXPERIMENTAL
[teachings loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
self.title = item.title;
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}
}
}
РЕДАКТИРОВАТЬ: .m ниже
#import "DetailTableViewController.h"
#import "NSString+HTML.h"
typedef enum { SectionHeader, SectionDetail } Sections;
typedef enum { SectionHeaderTitle, SectionHeaderDate, SectionHeaderURL, SectionHeaderEnclosure } HeaderRows;
typedef enum { SectionDetailSummary } DetailRows;
@implementation DetailTableViewController
@synthesize item, dateString, summaryString, teachings;
#pragma mark -
#pragma mark Initialization
- (id)initWithStyle:(UITableViewStyle)style {
if ((self = [super initWithStyle:style])) {
}
return self;
}
#pragma mark -
#pragma mark View lifecycle
- (void)viewDidLoad {
// Super
[super viewDidLoad];
// Date
if (item.date) {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterMediumStyle];
self.dateString = [formatter stringFromDate:item.date];
[formatter release];
}
// Summary
if (item.summary) {
self.summaryString = [item.summary stringByConvertingHTMLToPlainText];
} else {
self.summaryString = @"[No Summary]";
}
}
#pragma mark -
#pragma mark Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
switch (section) {
case 0: return 4;
default: return 1;
}
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Get cell
static NSString *CellIdentifier = @"CellA";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
// Display
cell.textLabel.textColor = [UIColor blackColor];
cell.textLabel.font = [UIFont systemFontOfSize:15];
if (item) {
// Item Info
NSString *itemTitle = item.title ? [item.title stringByConvertingHTMLToPlainText] : @"[No Title]";
// Display
switch (indexPath.section) {
case SectionHeader: {
// Header
switch (indexPath.row) {
case SectionHeaderTitle:
cell.textLabel.font = [UIFont boldSystemFontOfSize:15];
cell.textLabel.text = itemTitle;
break;
case SectionHeaderDate:
cell.textLabel.text = dateString ? dateString : @"[No Date]";
break;
case SectionHeaderURL:
cell.textLabel.text = item.link ? item.link : @"[No Link]";
cell.textLabel.textColor = [UIColor blueColor];
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
break;
case SectionHeaderEnclosure:
cell.textLabel.text = item.link ? item.link : @"[No Link]";
cell.textLabel.textColor = [UIColor blueColor];
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
break;
}
break;
}
case SectionDetail: {
// Summary
cell.textLabel.text = summaryString;
cell.textLabel.numberOfLines = 0; // Multiline
break;
}
}
}
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == SectionHeader) {
// Regular
return 34;
} else {
// Get height of summary
NSString *summary = @"[No Summary]";
if (summaryString) summary = summaryString;
CGSize s = [summary sizeWithFont:[UIFont systemFontOfSize:15]
constrainedToSize:CGSizeMake(self.view.bounds.size.width - 40, MAXFLOAT) // - 40 For cell padding
lineBreakMode:UILineBreakModeWordWrap];
return s.height + 16; // Add padding
}
}
#pragma mark -
#pragma mark Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Open URL
if (indexPath.section == SectionHeader && indexPath.row == SectionHeaderURL) {
if (item.link) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:item.link]];
}
}
if (indexPath.section == SectionHeader && indexPath.row == SectionHeaderEnclosure) {
if (item.enclosures) {
for (NSDictionary *dict in item.enclosures){
NSString *url = [dict objectForKey:@"url"];
NSLog(@" url is : %@",url);
//EXPERIMENTAL
UIWebView *urlView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
[self.view addSubView:urlView];
[urlView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}
}
}
// Deselect
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}
#pragma mark -
#pragma mark Memory management
- (void)dealloc {
[dateString release];
[summaryString release];
[item release];
[teachings release];
[super dealloc];
}
@end