大家好我正在使用iPad应用程序,我需要一些建议。
我有一个存储用户在线信息的数组,其中一个数据是URL。 信息列表显示在主详细信息表视图中,一旦选中,它将填充详细信息视图以显示其所有信息,其中一个是URL。我希望能够通过点击一个按钮进入显示的URL,该按钮将带我进入Safari并显示该网页。
下面是问题所在:
-(IBAction)loginClicked:(id)sender{
NSLog(@"loginClicked");
//--What should i replace indexPath.row with so that it will point to the current selected row?
loginObj = [appDelegate.loginArray objectAtIndex:indexPath.row];
//--if the above indexPath.row is replaced with an integer, the NSLog is able to print out the correct URL of that row
NSLog(@"URL = %@", loginObj.loginURL);
//--then when i insert loginObj.loginURL, it gives me error "too many arguments method to call, expected 1, have 2" but when i insert a proper URL @"http://www.google.com" it has no problem opening it up.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"%@", loginObj.loginURL]];
}
loginURL在我的班级中被声明为NSString。
我正在使用SDK4.2 iOS5,带有故事板的iPad主详细视图模板
答案 0 :(得分:0)
在接口文件中声明如下所示的整数
int theCurrentSelectedRow;
在didSelectRow方法中
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
theCurrentSelectedRow = indexPath.row;
}
如下所示改变您的方法,
-(IBAction)loginClicked:(id)sender{
NSLog(@"loginClicked");
loginObj = [appDelegate.loginArray objectAtIndex:theCurrentSelectedRow];
NSLog(@"URL = %@", loginObj.loginURL);
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"%@", loginObj.loginURL]];
}
我们的想法是将当前选定的行索引存储在全局变量中,并且访问权限在您的方法中使用它。
答案 1 :(得分:0)
+[NSURL URLWithString:]
不支持可变参数。您应该至少收到编译器警告,这段代码不正确:
[NSURL URLWithString: @"%@", loginObj.loginURL]
相反,要构建一个URL,只需:
[NSURL URLWithString:loginObj.loginURL]
更好的是,更新您的模型类以直接处理NSURL
。