我刚刚想出了如何在两个表视图中打开选项卡式导航控制器。我希望能够点击其中一个表格单元格(页面上的6个),并为此打开webview中的URL。
这是我的代码:
#import "FlashTopicsEViewController.h"
#import "ADVTheme.h"
@implementation FlashTopicsEViewController
@synthesize webView;
NSArray *flashtopicsEth;
NSArray *urlLinks;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.;
self.view.backgroundColor = [ADVTheme viewBackgroundColor];
self.view.tintColor = [UIColor whiteColor];
flashtopicsEth = [NSArray arrayWithObjects:@"Topic1",@"Topic2", nil];
urlLinks = [[NSArray alloc] initwithObjects:@"http://url1.com", @"http://url2.com",nil];
webView.delegate = self;
NSURL *URL = [NSURL URLWithString: urlLinks[indexPath.row]];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:URL];
[webView loadRequest:requestObj];
}
这是下面的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"FlashTopicECell";
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:simpleTableIdentifier];
}
UIImage *image1 = [UIImage imageNamed:@"flashImage.png"];
cell.imageView.image = image1;
cell.textLabel.text = [flashtopicsEth objectAtIndex:indexPath.row];
return cell;
}
这就是我的.h文件中的内容
#import <UIKit/UIKit.h>
@interface FlashTopicsEViewController : UIViewController
@property NSArray *urlLinks;
@property NSArray *flashtopicsEth;
@property (nonatomic,strong) IBOutlet UIWebView *webView;
@end
答案 0 :(得分:0)
@matt是对的,这很难做到lol :)但无论如何,你需要做的是使用一个名为“didSelectRowAtIndexPath”的UITableView的委托方法。这将检测何时敲击一个单元格:
你的问题非常基础而且不详细,所以为了这个基本答案的目的,我将在头文件中声明一个UIWebView,然后使用它。您需要将它添加到ViewController并将其链接起来。我也不知道你是如何存储你的URL的,我猜你使用的是数组?为了这个答案的目的,我也会。
IBOutlet UIWebView *websiteView;
NSArray *urlLinks;
现在开始实现代码:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Get the cell number that was tapped and then
// use that to access your array of URLs.
// Then pass that URL to a UIWebView.
NSURL *URL = [NSURL URLWithString:urlLinks[indexPath.row]];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:URL];
[websiteView loadRequest:requestObj];
}
同样在viewDidLoad中,像这样设置webview委托:
websiteView.delegate = self;
更新 - 回答您的意见
好的,在我的回答中,我假设您使用数组作为URL列表。但也有其他方法。如果您不想使用数组,则不必使用数组。
关于如何填充数组?那取决于很多事情:
1)您是否从服务器下载了URL列表?
2)您是否在代码中设置了网址列表?
如果您正在执行选项1,那么您可能正在解析类似于从服务器下载的JSON文件。在这种情况下,您可能希望使用以下内容:
urlLinks = [[feed objectForKey:@"items"] valueForKey:@"url"];
上面的代码会将所有url链接放入您的数组中。 (这只是一个非常小的片段 - 而不是整个代码 - 只是为了给你一个想法)。
如果你选择选项2,那么你已经知道了URL列表,并且想要在你的应用中定义它们,那么就这样做:
NSArray *urlLinks = [[NSArray alloc] initwithObjects:@"http://url1.com", @"http://url2.com", ...etc.... , nil];
然后要访问URL,你需要基本上从正确的数组对象中获取字符串,然后将其转换为NSURL,然后将其传递给您的webview,如下所示:
NSURL *URL = [NSURL URLWithString:urlLinks[indexPath.row]];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:URL];
[websiteView loadRequest:requestObj];
最后,您展示UIWebView的方式取决于您。如果你不想要它,它不必在一个单独的ViewController中。随你(由你决定。但如果你这样做,那么是的,接下来就是在屏幕上显示下一个视图控制器。请记住,如果您希望该视图控制器中的UIWebView显示您的网站,则必须将URL传递给它。
更新2 - 回答您的问题/代码
好的,你的代码有些问题:
摆脱数组声明中的“etc ....”位置。大声笑我只是添加了它,以帮助您了解如何填充数组。所以它应该是:
flashtopicsEth = [NSArray arrayWithObjects:@"Topic1",@"Topic2", nil];
您刚刚在实现(.m)文件中随机插入了数组代码....这不是您放置的位置。您可以将其插入到viewDidLoad等方法或您自己创建的其他方法中。您不能随意在任何地方添加它。因此,为了简单起见,我们首先在viewDidLoad中分配数组,如下所示:
-(void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
flashtopicsEth = [NSArray arrayWithObjects:@"Topic1", @"Topic2", nil];
urlLinks = [[NSArray alloc] initwithObjects:@"http://url1.com",@"http://url2.com", nil];
webView.delegate = self;
NSURL *URL = [NSURL URLWithString: urlLinks[indexPath.row]];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:URL];
[webView loadRequest:requestObj];
}
在头文件中声明您的NSArray,并在实现(.m)文件中分配它们。不要在viewDidLoad中声明它们,因为它们将是viewDidLoad的本地,并且除非将数组传递给它们,否则其他UITableView方法将无法访问它们。为了保持简单(因为您是初学者),只需在标题(.h)文件中声明它们:
#import
<UIKit/UIKit.h>
@interface FlashTopicsEViewController : UIViewController {
NSArray *flashtopicsEth;
NSArray *urlLinks;
}
@property (nonatomic,strong) IBOutlet UIWebView *webView;
@end