我有一个非故事板应用程序,它有一个带有一堆单元格的UITableView,点击一个单元格后我用一个UIWebView推动一个视图控制器,本地html文件根据点击的单元格加载。
如果此UIWebView中还有其他链接,我使用UIWebView委托方法shouldStartLoadWithRequest以及此代码:
if(navigationType == UIWebViewNavigationTypeLinkClicked) {
//When a html link is clicked in uiwebview
NSURL *url = request.URL;
NSString *urlString = url.absoluteString;
//Get components of url
NSArray *urlComponents = [urlString componentsSeparatedByString:@"/"];
//Get last component which should be wanted file name
NSString *wantedLink = [urlComponents objectAtIndex:[urlComponents count]-1];
//Get the url without the dot
NSArray *fileComponents = [wantedLink componentsSeparatedByString:@"."];
NSString *wantedFile = [fileComponents objectAtIndex:0];
ALSDetailViewController *superDetail = [[ALSDetailViewController alloc] initWithNibName:@"ALSProtocolDetailViewController" bundle:nil];
self.alsProtocolDetailViewController = superDetail;
//Check for each wanted file name to see if it matches another file
if ([wantedLink isEqualToString:@"VTachPulseStable.html"]) {
//Open different protocol xib with html file name as parameter, and push the view in
self.alsProtocolDetailViewController.title = @"Ventricular Tachycardia With Pulse";
self.alsProtocolDetailViewController.protocolURL = wantedFile;
self.alsProtocolDetailViewController.protocolSubTitle = @"Stable Without Decompensation";
[self.navigationController pushViewController:self.alsProtocolDetailViewController animated:YES];
return NO;
}
}
此代码来自我工作的旧非故事板应用程序。
基本上它使用新的loadRequest重新加载当前的相同视图并将其推送到堆栈顶部,这样用户就可以返回到最后一个loadRequest。
现在有了故事板,我无法弄清楚如何用segue来完成同样的功能,我需要调用这些动作并将控制器推到堆栈上。
我尝试过performSegueWithIdentifier,但没有运气。
如果我在没有在堆栈上推送视图控制器的新实例的情况下对webview使用NSURL加载请求,它就会起作用。
但我需要用户能够回去。
我有什么想法可以做到这一点?
答案 0 :(得分:0)
您可以使用UIWebView
的{{1}}方法:
<强> GoBack的强>
加载后续列表中的上一个位置。
您可以在导航栏或额外的工具栏中添加一些按钮来完成此操作。这肯定比推送新的视图控制器实例更好。
顺便说一下,您可以通过将segue拖动到故事板中的同一个视图控制器,将视图控制器推送到自身。
答案 1 :(得分:0)
我通过使用:
解决了这个问题UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
通过ID获取故事板项,然后使用旧的pushViewController。
达到同样的效果。