我还在努力改进“我的第二个 iOS 应用”,这是 Apple 提供的教程。这是故事板的图片,并添加了对应该发生的事情的评论。
单击完成按钮(步骤 3)时,实际屏幕应返回主菜单(3.a),而完成的 BirdSightingObject 应添加到BirdMasterViewController
(3.b)列表中。所以我想我可以使用 Singleton,因为只能同时添加一个对象,这使得从不同类的访问变得更加容易。
在本教程中,已经为数据处理提供了一个类“ BirdSighting
”,它可能被用作单例。但由于我只有 OOP 和设计模式的初级知识,我不知道我是否可以使用它,或者我是否必须参考现有的类来编写自己的。
其次:我一点也不知道如何访问方法BirdMasterViewController
中的(IBAction)done
以最终将对象保存在列表中。
注意:以下源代码部分由 Apple, Inc. 提供。请参阅此查看教程的完整代码列表。无意侵犯版权。
BirdSighting.h
:
@interface BirdSighting : NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *location;
@property (nonatomic, strong) NSDate *date;
- (id)initWithName:(NSString *)name location:(NSString *)location date:(NSDate *)date;
- (id)initWithNameOnly:(NSString *)name date:(NSDate *)date;
@end
BirdSighting.m
:
#import "BirdSighting.h"
@implementation BirdSighting
- (id)initWithName:(NSString *)name location:(NSString *)location date:(NSDate *)date
{
self = [super init];
if (self)
{
_name = name;
_location = location;
_date = date;
return self;
}
return nil;
}
-(id)initWithNameOnly:(NSString *)name date:(NSDate *)date
{
self = [super init];
if (self)
{
_name = name;
_date = date;
return self;
}
return nil;
}
@end
该(IBAction)done
方法,在MainMenuViewController.m
:
- (IBAction)done:(UIStoryboardSegue *)segue
{
if ([[segue identifier] isEqualToString:@"ReturnInput"])
{
AddLocationToSighting *addController = [segue sourceViewController];
if (addController.birdSighting)
{
[self.dataController addBirdSightingWithSighting:addController.birdSighting];
[[self tableView] reloadData];
}
[self dismissViewControllerAnimated:YES completion:NULL];
}
}
概括:
- 我可以
BirdSighting
变成单身人士吗?如果是这样,缺少什么?(无需为我编写代码,如果您提供提示,我希望我可以自己完成。) - 如何将对象保存在
BirdMasterViewController
? 我不知道如何在(IBAction)done
.