【问题标题】:Objective C Calling Method on Another Class另一个类上的Objective C调用方法
【发布时间】:2023-03-15 05:45:01
【问题描述】:

我有 2 个类,例如 MainViewController 和 'FooView'。

在 MainViewController 我有一个名为-(void)doSearch的方法

我正在尝试从 Foo 调用 doSearch,在日志“doSearch”(NSLog)中看到,但 UIWebView 没有响应。

Foo

MainViewController *mainVc = [[MainViewController alloc] init];
[mainVc doSearch];

MainViewController


- (void)doSearch {
    NSLog(@"doSearch");
    [myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]];
}

myWebView 是一个 UIWebView。

谢谢,

盖伊多尔

【问题讨论】:

  • “没有成功”是什么意思?有任何错误/警告吗?
  • 我想你没有使用正确的对象。发布您如何创建视图以及如何访问对象。
  • 没有一个是空的,我尝试了 initWithNibName 并且 UIWebView 仍然没有响应

标签: iphone objective-c class methods uiwebview


【解决方案1】:

检查“mainVc”是否不为零。您可能正在初始化它。

【讨论】:

  • 试试这个:MainViewController *mainVc = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
【解决方案2】:

我认为这里有些东西是零。在 Obj-C 中,您可以在 nil 对象上发送消息(调用方法)而不会出现错误或异常。在您的情况下,您的 MainViewController 在 FooView 中可能为 null,或者该方法中的某些内容可能为 nil。例如,如果该视图控制器有一个 xib 文件,则需要使用 initWithNibName:bundle: 加载它。如果您不这样做,那么 IBOutlets 将为零(例如,可能是您的 doSearch: 方法中的 myWebView)。

【讨论】:

    【解决方案3】:

    如果你用 NIB 文件创建 MainViewController 那么你必须像这样调用。

      MainViewController *mainVc = [[MainViewController alloc]initWithNibName:@"MainViewController" bundle:nil];
    
      [mainVc doSearch];
    

    【讨论】:

    • 谢谢,但如果我用 initWithNibName 初始化 MainViewController,我实际上会重新创建整个界面,因为在这种方法下,我会向 xib 文件添加一些视图
    猜你喜欢
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    相关资源
    最近更新 更多