我有一个拍照应用程序,它有一个PhotoViewController,下面的代码用于通知。在此视图控制器上还有一个按钮,该按钮调用通过委托在PhotoViewController中打开的照片拍摄视图控制器。
PhotoViewVC.h包含:
@interface PhotoViewVC : UIViewController <UITextViewDelegate, PhotoTakingVCDelegate>
// Photo data
@property (nonatomic, strong) NSData *photoData;
@property (nonatomic, strong) NSString *photoText;
@property (nonatomic, strong) NSString *photoObject;
@property (nonatomic, strong) NSString *photoParentObject;
@property (nonatomic, strong) NSString *photoUsername;
@property (nonatomic, strong) NSNumber *photoBestCount;
@property (nonatomic, strong) NSNumber *photoReplyCount;
@property (nonatomic, strong) NSMutableAttributedString *photoLabel;
@property (nonatomic, assign) BOOL photoViewerAddedBests;
@endPhotoViewVC.m有:
- (void) viewDidLoad
{
[self postNotification];
[self listenToNotifications];
}
- (void) postNotification
{
NSDictionary *dataDict = [NSDictionary dictionaryWithObject:_photoObject forKey:@"photoObject"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"replyHappened" object:self userInfo:dataDict];
}
- (void) listenToNotifications
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleReplied:) name:@"replyHappened" object:nil];
}
- (void) handleReplied:(NSNotification *) note
{
NSDictionary *data = [note userInfo];
if (data != nil)
{
NSString *object = [data objectForKey:@"photoObject"];
// Update counts
int count = [_photoBestCount intValue];
count = count + 1;
_photoBestCount = [NSNumber numberWithInt:count];
_bestsCount.text = [NSString stringWithFormat:@"%@", _photoBestCount];
}
}
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
// Now the PhotoTakingVC delegation functions:
- (void) photoTakingVCDismiss:(PostViewController *) sender
{
[sender dismissViewControllerAnimated:YES completion:nil];
}
- (void) photoTakingVCPresent:(PostViewController *) sender
{
[self dismissViewControllerAnimated:YES completion:nil];
PhotoViewVC *best = [[PhotoViewVC alloc] init];
best.photoData = _photoData;
best.photoText = _photoText;
best.photoObject = _photoObject;
best.photoParentObject = _photoParentObject;
best.photoUsername = _photoUsername;
best.photoBestCount = _photoBestCount;
best.photoReplyCount = _photoReplyCount;
best.photoLabel = _photoLabel;
best.photoViewerAddedBests = _photoViewerAddedBests;
best.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:best animated:NO];
}
- (void) photoView:(NSData *) photo andText:(NSString *) text andObject:(NSString *) object andParentObject:(NSString *) parentObject andUsername:(NSString *) username andBestCount:(NSNumber *) bestCount andReplyCount:(NSNumber *) replyCount andLabel:(NSMutableAttributedString *) label andAddedBests:(BOOL) addedBests
{
_photoData = photo;
_photoText = text;
_photoObject = object;
_photoParentObject = parentObject;
_photoUsername = username;
_photoBestCount = bestCount;
_photoReplyCount = replyCount;
_photoLabel = label;
_photoViewerAddedBests = addedBests;
}我很难使我的计数增加。所以我的应用程序是这样工作的:
为什么每次_photoBestCount从0开始,而不是持续增加?
发布于 2015-03-30 06:51:16
在步骤10中,您声明:
PhotoViewVC通过委托创建PhotoViewVC的另一个实例(第三个)。
每次创建新的VC时,您都要创建一个新的iVar _photoBestCount,初始化为零。因此,如果您想要一个持久计数器,只需将该属性放入一个Model类(称为PhotoCounter或其他什么)。创建该类的一个实例并将其传递给PhotoViewVC。现在,每次更新这个iVar时,您使用的都是同一个计数器,而不是一个新的计数器
https://stackoverflow.com/questions/29339640
复制相似问题