0

我有一个应用程序,它有一个名为 MainViewController 的第一个视图控制器,它有点像秒表,当我点击完成时,它会显示一个 UIAlertView 推送另一个视图控制器 EndViewController,它显示秒表运行了多长时间以及它暂停了多长时间. 我收到以下错误:

My Point[851:c07] -[EndViewController topViewController]: unrecognized selector sent to instance 0x754db60

My Point[851:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[EndViewController topViewController]: unrecognized selector sent to instance 0x754db60'

谁能指出你有什么问题?

这是我的代码:

主视图控制器.h:

#import "EndViewController.h"
@interface MainViewController : UIViewController <UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate, UIAlertViewDelegate>
@property (strong, nonatomic) IBOutlet UILabel *out;
@property (strong, nonatomic) IBOutlet UILabel *in;
@end

主视图控制器.m:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([segue.identifier isEqualToString:@"endtask"]){
        UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
        EndViewController *controller = (EndViewController *)navController.topViewController;
        controller.timeIn.text=_in.text;

    }
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    _alert = [[UIAlertView alloc] initWithTitle:@"Are you sure?"
                                                    message:nil
                                                   delegate:self
                                          cancelButtonTitle:@"NO"
                                          otherButtonTitles:@"YES", nil];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0) {
        //do nothing
    }
    else if (buttonIndex == 1) {

        [self performSegueWithIdentifier:@"endtask" sender:self];
    }}

- (IBAction)endButton:(UIButton *)sender {
    [_alert show];
}
- (IBAction)endButton:(UIButton *)sender {
    [_alert show];
}

EndViewController.h:

@interface EndViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *timeIn;
@end
4

2 回答 2

0

您正在调用topViewController在没有方法/属性的对象上命名的方法。这是这里的这一行:

EndViewController *controller = (EndViewController *)navController.topViewController;

我怀疑它是因为您分配给的视图控制器实际上navController不是导航控制器,而是其他东西。检查你的故事板/笔尖。

另外,正如一位评论者所说,尝试 logging navController,看看它会给你什么。

NSLog(@"%@", navController); 
于 2013-04-02T23:11:58.310 回答
0

如果你用 timeIn 传递一个字符串,你应该在 endViewController.h 中有一个 NSString 的 @property

 @property (strong, nonatomic) NSString * timeIn ;

然后在你的 endViewController.m 中,你将 timeIn 放入一个 lab 中。

myLabel.text = timeIn;
于 2013-04-02T23:30:56.913 回答