使用Parse.com从UITableView Cell Selection加载UIWebView

时间:2015-02-25 23:40:24

标签: ios uitableview uiwebview parse-platform nsstring

我创建了一个“事件表”,其中包含事件名称,日期和位置。单击每个事件单元格后,我尝试将特定事件URL加载到Web视图中。完全迷失了。

我在ViewController.m中集成了“prepareForSegue”,并且已成功将单个url加载到代码中定义的每个表格单元格中,但我似乎无法从Parse.com加载一串URL。事件表数据的其余部分可以从Parse中正确加载。我只是在努力处理URL。

有人可以帮忙吗?

这就是我对个人网址的负载:

-(void)loadRequestFromString:(NSString*)urlString
{
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[self.eventWebView loadRequest:urlRequest];
}

- (void)viewDidLoad
{
[super viewDidLoad];


self.title = event.name;
[self loadRequestFromString:@"http://www.airleague.co.uk"];

}

- (void)viewDidUnload
{

[self setEventWebView:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
}

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

@end

我的意思是:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showEventDetail"]) {
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    EventDetailViewController *destViewController = segue.destinationViewController;

    PFObject *object = [self.objects objectAtIndex:indexPath.row];
    Event *event = [[Event alloc] init];
    event.name = [object objectForKey:@"name"];
    event.eventURL = [object objectForKey:@"eventURL"];

    destViewController.event = event;

}
}


@end

2 个答案:

答案 0 :(得分:0)

有:

[self loadRequestFromString:NSString];

要工作,网址应该在网址中包含@“http://”(或任何协议)。
例如,它必须是“http://google.com”而不是“google.com”

Parse.com中的网址是否在字符串中有协议?

答案 1 :(得分:0)

首先,你必须检索你的对象,这些对象存储为一个字符串:

因此,在viewDidLoad中,您可以执行以下查询:

PFQuery *urlQuery = [PFQuery queryWithClassName:@"WebViewURLs"];
urlQuery.cachedPolicy = whateverPolicyYouWant;
[urlQuery selectKeys:@[@"NameOfURLColumn"]];
[urlQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
        self.urlArray = objects;
        NSLog(@"%@", self.urlArray);
        //you'll notice the NSLog logs all attributes to that array, so if you want to narrow it down to a specific column you can do something like this:
        self.urlArray = [objects valueForKey:@"NameOfColumn"];
    }
}];

所以现在你有一个数组中的对象,你可以采取相应的行动。如果您想要更具体的答案,那么您的设置必须更加具体。我只是在猜测,因为我不是读者......但是:)


编辑从您通过电子邮件发送给我的项目中获取了一个雄猫...

寻找类似答案的其他用户的快速概要:

确保您的IBOutlet连接是单一的并附加到其各自所有者。

此外,OP没有正确划分,每次选择单元格时都会分配一个新的子类,但是没有将任何信息传递给webView视图控制器。

值得指出的是OP已将tableView子类化为Parses PFQueryTableViewController

确保正确调用目标视图控制器并将信息传递到Detail VC标题中的正确设置属性:

if ([segue.identifier isEqualToString:@"showDetailVC"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

DetailViewController *destViewController = segue.destinationViewController;

PFObject *object = [self.objects objectAtIndex:indexPath.row];

destViewController.eventURL = [object objectForKey:@"ingredients"];
destViewController.eventName = [object objectForKey:@"name"];
}

详细介绍VC标题

@property (nonatomic, strong) IBOutlet UIWebView *webView; 
@property (nonatomic, strong) NSString *eventURL;
@property (nonatomic, strong) NSString *eventName;

详细介绍VC实施:

//Load the webView in viewDidLoad:
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.eventURL]]];