【发布时间】:2015-09-19 08:43:21
【问题描述】:
我在单击主视图上的标签时遇到此错误,该标签通向详细视图(该标签应显示为 ReasonLibrary 的数据模型中显示的标签。
我的代码:
主视图控制器标题
@interface MasterViewController : UIViewController
@property (strong, nonatomic) IBOutletCollection(UILabel) NSArray *reasonLabelViews;
@end
主视图控制器实现
#import "MasterViewController.h"
#import "DetailViewController.h"
#import "Reasons.h"
@interface MasterViewController ()
@end
@implementation MasterViewController
- (void)viewDidLoad {
[super viewDidLoad];
for (NSUInteger index = 0; index < self.reasonLabelViews.count; index++) {
Reasons *reason = [[Reasons alloc] initWithIndex:index];
UILabel *reasonLabelView = self.reasonLabelViews[index];
reasonLabelView.text = reason.reasonsRazao;
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
UILabel *reasonLabelView = (UILabel *)[sender view];
if ([self.reasonLabelViews containsObject:reasonLabelView]) {
NSUInteger index = [self.reasonLabelViews indexOfObject:reasonLabelView];
DetailViewController *detailViewController = (DetailViewController *)segue.destinationViewController;
detailViewController.reason = [[Reasons alloc] initWithIndex:index];
}
}
- (IBAction)showReasonDetail:(id)sender {
[self performSegueWithIdentifier:@"showReasonDetail" sender:sender];
}
@end
详细视图控制器标题
#import <UIKit/UIKit.h>
@class Reasons;
@interface DetailViewController : UIViewController
@property (strong, nonatomic) Reasons *reason;
@property (weak, nonatomic) IBOutlet UILabel *reasonLabel;
@property (weak, nonatomic) IBOutlet UILabel *motiveLabel;
@property (weak, nonatomic) IBOutlet UILabel *zeroFiveLabel;
@end
详细视图控制器实现
#import "DetailViewController.h"
#import "Reasons.h"
@interface DetailViewController ()
@end
@implementation DetailViewController
- (void)viewDidLoad {
[super viewDidLoad];
if (self.reason) {
self.reasonLabel.text = self.reason.reasonsRazao;
self.motiveLabel.text = self.reason.randomFact;
self.zeroFiveLabel.text = self.reason.reasonsDeZeroACinco;
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
原因库标题
#import <Foundation/Foundation.h>
extern NSString *const kRazao;
extern NSString *const kMotivo;
extern NSString *const kDeZeroACinco;
@interface ReasonLibrary : NSObject
@property (strong,nonatomic) NSArray *library;
- (NSString *)randomFact;
@end
原因库实现
#import "ReasonLibrary.h"
@implementation ReasonLibrary
NSString *const kRazao = @"razao";
NSString *const kMotivo = @"motivo";
NSString *const kDeZeroACinco = @"dezeroacinco";
- (instancetype)init
{
self = [super init];
if (self) {
_library = @[@{kRazao: @"Razao 1",
kMotivo: @[@"Por que sim",@"Por que demais",@"Por que muito",@"Por que foda",@"Por que top",@"Por que demasiado"],
kDeZeroACinco: @"1",
},
@{kRazao: @"Razao 2",
kMotivo: @[@"Por que sim",@"Por que demais",@"Por que muito",@"Por que foda",@"Por que top",@"Por que demasiado"],
kDeZeroACinco: @"2",
},
@{kRazao: @"Razao 3",
kMotivo: @[@"Por que sim",@"Por que demais",@"Por que muito",@"Por que foda",@"Por que top",@"Por que demasiado"],
kDeZeroACinco: @"3",
},
@{kRazao: @"Razao 4",
kMotivo: @[@"Por que sim",@"Por que demais",@"Por que muito",@"Por que foda",@"Por que top",@"Por que demasiado"],
kDeZeroACinco: @"4",
},
@{kRazao: @"Razao 5",
kMotivo: @[@"Por que sim",@"Por que demais",@"Por que muito",@"Por que foda",@"Por que top",@"Por que demasiado"],
kDeZeroACinco: @"5",
},
@{kRazao: @"Razao 6",
kMotivo: @[@"Por que sim",@"Por que demais",@"Por que muito",@"Por que foda",@"Por que top",@"Por que demasiado"],
kDeZeroACinco: @"6",
}
];
}
return self;
}
- (NSString *)randomFact {
int random = arc4random_uniform((int)self.library.count);
return [self.library objectAtIndex:random];
} @结束
原因标题
#import <Foundation/Foundation.h>
@interface Reasons : NSObject
@property (strong, nonatomic) NSString *reasonsRazao;
@property (strong, nonatomic) NSString *reasonsMotivo;
@property (strong, nonatomic) NSString *reasonsDeZeroACinco;
@property (strong, nonatomic) NSString *randomFact;
-(instancetype)initWithIndex:(NSUInteger)index;
@end
原因实施
#import "Reasons.h"
#import "ReasonLibrary.h"
@implementation Reasons
-(instancetype)initWithIndex:(NSUInteger)index {
self = [super init];
if (self) {
ReasonLibrary *reasonlibrary = [[ReasonLibrary alloc] init];
NSArray *library = reasonlibrary.library;
NSDictionary *reasonsDictionary = library[index];
_reasonsRazao = [reasonsDictionary objectForKey:kRazao];
_reasonsMotivo = [reasonsDictionary objectForKey:kMotivo];
_reasonsDeZeroACinco = [ reasonsDictionary objectForKey:kDeZeroACinco];
}
return self;
}
@end
【问题讨论】:
-
哪一行代码产生了这个错误?
-
@MahmoudAdam 不确定如何检查:(对不起,我是新手
标签: ios objective-c segue unrecognized-selector