'NSInvalidArgumentException',原因:' - [UINavigationController setMed:]:无法识别的选择器发送到实例0x746dda0'

Jam*_*ter 2 xcode core-data ios

我正在制作一个应用程序,可以帮助有特定健康状况的人管理他们的药物.我已经创建了一种模式来添加药物,使用核心数据来保存新的药物.

我现在正试图让人们在保存药物后进行编辑.为此,我尝试将药物的管理对象发送到"fibromappMedsEditViewController",并在类的viewDidLoad方法中分配信息.

我一直收到这个错误:

'NSInvalidArgumentException', reason: '-[UINavigationController setMed:]: unrecognized selector sent to instance 0x746dda0' 
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我做错了什么?

fibromappMedsListViewController.m中的相关方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{   //selMed declared at top of file as NSManagedObject *selMed;
    selMed = [self.meds objectAtIndex:indexPath.row];
    NSLog(@"SELECTED MED: %@",[selMed valueForKey:@"name"] );
    UIStoryboardSegue *segueString = [NSString stringWithFormat:@"%@",@"editMeds"];

    NSLog(@"%@",segueString);

    [self performSegueWithIdentifier:@"editMeds" sender:indexPath];

}

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{


    NSLog(@"%@",segue.destinationViewController);

    NSLog(@"%@",[selMed valueForKey:@"name"] );

    fibroMappMedsEditViewController *dest = segue.destinationViewController;
    dest.med = selMed;


}
Run Code Online (Sandbox Code Playgroud)

fibroMappMedsEditViewController.h

#import <UIKit/UIKit.h>

@interface fibroMappMedsEditViewController : UITableViewController
- (IBAction)saveChanges:(id)sender;
- (IBAction)deleteBtnPressed:(id)sender;
- (IBAction)dosageChanged:(id)sender;
- (IBAction)maxDosageChanged:(id)sender;
- (IBAction)cancel:(id)sender;
- (IBAction)typeChanged:(id)sender;

@property (weak, nonatomic) IBOutlet UITextField *tbName;
@property (weak, nonatomic) IBOutlet UITextField *tbDose;
@property (weak, nonatomic) IBOutlet UITextField *tbMaxDose;
@property (weak, nonatomic) IBOutlet UITextField *tbType;
@property (weak, nonatomic) IBOutlet UIStepper *stepperDose;
@property (weak, nonatomic) IBOutlet UIStepper *stepperMaxDose;
@property (weak, nonatomic) IBOutlet UISegmentedControl *changeMeasure;
@property (strong, nonatomic) NSManagedObject *med;

@end
Run Code Online (Sandbox Code Playgroud)

fibroMappMedsEditViewController.m - 只是我改变了影响控制器加载方式的部分

#import "fibroMappMedsEditViewController.h"
#import "fibroMappAppDelegate.h"
#import <CoreData/CoreData.h>

@interface fibroMappMedsEditViewController ()

@end

@implementation fibroMappMedsEditViewController


@synthesize tbName;
@synthesize tbDose;
@synthesize tbMaxDose;
@synthesize tbType;
@synthesize med;
double dose;
double maxDose;

- (void)viewDidLoad
{
    [super viewDidLoad];

    tbName.text = [med valueForKey:@"name"];//name is a string in the model
    tbDose.text = [med valueForKey:@"dose"];//dose is a double in the model
    tbMaxDose.text = [med valueForKey:@"maxDose"];//maxDose is a double in the model
    tbType.text = [med valueForKey:@"type"];//type is a string in the model

}
Run Code Online (Sandbox Code Playgroud)

如果您需要查看其他内容,请询问.

此外,我正在使用这个应用程序的故事板.

rde*_*mar 11

从该日志中可以看出,您的fibroMappMedsEditViewController(应该以大写字母BTW开头)嵌入在导航控制器中.您需要访问该导航控制器的根视图控制器.

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    UINavigationController *nav = segue.destinationViewController;
    fibroMappMedsEditViewController *dest = (fibroMappMedsEditViewController *)nav.topViewController;
    dest.med = selMed;
}
Run Code Online (Sandbox Code Playgroud)