如何将var传递给iphone中的下一个视图

时间:2012-01-05 08:56:30

标签: iphone objective-c

我希望传递url到详细视图控制器以在webview中显示,但它在targetController.url = url上提供了多余的错误;

如果我这样做,那么它将完美地进入下一个视图但不是第一次给出

NSString*url=@"www.google.com"; 

PortfolioDetailViewController *targetViewController=[[PortfolioDetailViewController alloc] initWithNibName:@"PortfolioDetailViewController" bundle:[NSBundle mainBundle]];
targetViewController.stringURLToLoad =url;
[self.navigationController pushViewController:targetViewController animated:YES];
[targetViewController release];

错误日志

2012-01-05 10:25:21.459 MotherAndChildGuide[656:207] http://www.stbcouncil.com
Current language:  auto; currently objective-c
Program received signal:  “EXC_BAD_ACCESS”.

(gdb) 

2 个答案:

答案 0 :(得分:0)

在实际课程中

- (IBAction)tappedItemAtIndexButton:(id)sender
{
  NSString *url =[NSString stringWithFormat:@"%@",@"www.google.com"];
  PortfolioDetailViewController *targetViewController=[[PortfolioDetailViewController alloc] initWithNibName:@"PortfolioDetailViewController" bundle:[NSBundle mainBundle]];
 targetViewController.url=url;
 [self.navigationController pushViewController:targetViewController animated:YES];
 [targetViewController release];

 }

在Target类中,您需要使用 .H

NSString *url;
@property(nonatomic,retain)NSString *url;

.m

@synthesize url;

并在该类的任何位置使用该字符串

并使用

  NSURLRequest* request = [NSURLRequest requestWithURL: [NSURL URLWithString:self.url]];
 [webView loadRequest:request];

在webview中加载

答案 1 :(得分:0)

正如您所提到的,您希望将var(URL)传递给下一个视图控制器并在Web视图中加载某些内容。您可以声明一个Var来保存 PortfolioDetailViewController 中的传入值,例如

NSString* strURLToLoad;NSURL * urlToLoad;

并通过 属性 公开它们。在这两种情况下,您需要从之前的viewcontroller传递正确的值

 - (IBAction)tappedItemAtIndexButton:(id)sender {

      NSString*url =url1;
      PortfolioDetailViewController *targetViewController=[[PortfolioDetailViewController alloc] initWithNibName:@"PortfolioDetailViewController" bundle:[NSBundle mainBundle]];
     targetViewController.strURLToLoad = url;
     [self.navigationController pushViewController:targetViewController animated:YES];
     [targetViewController release];

     }

     - (IBAction)tappedItemAtIndexButton:(id)sender {

         NSURL* urlToSend = [NSURL urlWithString:url1];
          PortfolioDetailViewController *targetViewController=[[PortfolioDetailViewController alloc] initWithNibName:@"PortfolioDetailViewController" bundle:[NSBundle mainBundle]];
         targetViewController.urlToLoad = urlToSend;
         [self.navigationController pushViewController:targetViewController animated:YES];
         [targetViewController release];

         }

取决于您在 PortfolioDetailViewController中声明的变量类型

如果您从之前的视图控制器传递字符串,则需要将其用作

之类的字符串
NSURLRequest* request = [NSURLRequest requestWithURL: [NSURL URLWithString:self.strURLToLoad]];
[webView loadRequest:request];

或者如果你传递了一个URL,你可以使用

直接加载它
NSURLRequest* request = [NSURLRequest requestWithURL: self.urlToLoad];
    [webView loadRequest:request];

希望它有所帮助!!