3

我正在开发一个 iphone 应用程序,您可以在其中登录服务器,在您获得验证后,我的应用程序会将您移动到另一个视图控制器,您可以在其中使用按钮发送您的 gps 位置。出于某种原因,当我在下一个视图控制器中按下按钮时,出现此错误:

Administrator[3148:c07] -[UIViewController SendGPS:]: unrecognized selector sent to instance 0x88b58d0
2013-01-08 16:01:21.662 Administrator[3148:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController SendGPS:]: unrecognized selector sent to instance 0x88b58d0'

如果我在单个视图控制器中应用我的 gps 代码按钮,结果证明可以正常工作,但是当我将我的应用程序与两个视图控制器一起使用时,第一个将您重定向到第二个(如果只有您登录到服务器)我得到这个错误。我通过检查服务器响应的条件转移到第二个视图控制器。这是我用来更改视图控制器的代码:

NSString *compare = [NSString stringWithFormat:@"true"];

    if ( [compare isEqualToString:string])  {

        UIViewController* FourthViewController = [[UIViewController alloc] initWithNibName:@"FourthViewController" bundle:[NSBundle mainBundle]];
        [self.view addSubview:FourthViewController.view];   }
    else
        NSLog(@"validation not complete");

这是我使用 NSTimer 的按钮:

-(IBAction)SendGPS:(id)sender
 {
     Timer= [NSTimer scheduledTimerWithTimeInterval:30.0 target:self  selector:@selector(requestIt) userInfo:nil repeats:YES];
 }

有什么想法吗?提前致谢!

4

2 回答 2

7

代码的错误部分很明显,这就是初始化视图控制器的方式:

    UIViewController* FourthViewController = [[UIViewController alloc] initWithNibName:@"FourthViewController" bundle:[NSBundle mainBundle]];

那就是从 Apple 的代码中创建一个新的视图控制器对象,它不知道 Chuck Norris 的方法SendGPS:是什么。因为您显然在您的 Xcode 项目中创建了一个名为 ' FourthViewController'的新视图控制器子类。SendGPS:您正在创建一个名为 ' FourthViewController' 的实例,但它实际上并不指向该类,它是UIViewController您指定的类。

正确的代码应该是:

    FourthViewController *myFourthViewController = [[FourthViewController alloc] initWithNibName:@"FourthViewController" bundle:[NSBundle mainBundle]];

你真的需要弄清楚,我认为你不懂 Objective-C,拿起一本书,开始阅读,然后做对!

于 2013-01-08T14:24:14.150 回答
0

代替

UIViewController* FourthViewController = [[UIViewController alloc] initWithNibName:@"FourthViewController" bundle:[NSBundle mainBundle]];

FourthViewController* FourthViewController = [[FourthViewController alloc] initWithNibName:@"FourthViewController" bundle:[NSBundle mainBundle]];

还要检查您是否SendGPS在 .h 文件中声明了函数

希望对你有帮助

于 2013-01-08T14:26:38.550 回答