长话短说,我整天都在使用 prepareForSegue 方法来解决这段代码问题。我有一个随机链接,用户输入并放在tableView中。现在,用户可以单击tableView中的单元格,该单元格通过另一个带WebView的UIViewController连接到该链接。问题是我无法获得将在webView中显示网站的算法。我也是Objective-C的新手。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showArticle"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSString *string = [self.toDoItems objectAtIndex:indexPath.row];
[[segue destinationViewController] setUrl:string];
这是来自tableView。也许我应该使用 didSelectRowAtIndexPath 帮助!
答案 0 :(得分:0)
您需要使用didSelectRowAtIndexPath:
!否则,您的TableViewController不知道用户选择了一个单元格。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
self.propertyToStoreTheString = [self.toDoItems objectAtIndex:indexPath.row];
[self performSegueWithIdentifier:@"showArticle" sender:nil];
}
在您的prepareForSegue
方法中,您只需使用[((MyViewController *)[segue destinationViewController]) setUrl:self.propertyToStoreTheString];
答案 1 :(得分:0)
有一个类似的情况,这就是我所做的://在包含webView的类中
Excel 8.0;
我在我的第一个iOS应用程序上使用了这个代码,所以我并不为此感到自豪,但它对我有用。
关于传递URL,你做得很好,至少我有相同的代码:
-(BOOL) validateURL: (NSString *) candidate {
NSString *urlRegEx =@"((?:http|https)://)?(?:www\\.)?[\\w\\d\\-_]+\\.?[\\w\\d\\-_]+\\.\\w{2,4}(\\.\\w{2})?(.*)?"; ///(?<=/)(?:[\\w\\d\\-./_]+)?
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
return [urlTest evaluateWithObject:candidate];
}
- (NSURL *)goToWebPage {
NSString *fullURL;
if(self.adressBar.text == nil){ //full text of the passed url is not nill
return nil;
}else if([self validateURL:self.adressBar.text]){
#if __IPHONE_OS_VERSION_MIN_REQUIRED < 80000
if(([self.adressBar.text rangeOfString:@"http://"].location != NSNotFound) || ([self.adressBar.text rangeOfString:@"https://"].location != NSNotFound)){
#endif
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 80000
if([self.adressBar.text containsString:@"http://"] || [self.adressBar.text containsString:@"https://"]){
#endif
fullURL = self.adressBar.text;
}else {
fullURL = [NSString stringWithFormat:@"http://%@",self.adressBar.text];
}
}else {
NSString *new = [self.adressBar.text stringByReplacingOccurrencesOfString: @" " withString:@"%20"];
fullURL = [NSString stringWithFormat:@"https://www.google.com/search?q=%@",new];
}
NSURL *url = [[NSURL alloc] initWithString:fullURL];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[_myWebView loadRequest:requestObj];
_myWebView.scalesPageToFit = true;
return url;
}