Ios 删除控制器(B)中的表行时,如何更新控制器(a)中的标签?
我有一个视图控制器(a),带有一个显示某些事务余额的标签。在视图控制器中,我有一个容器视图,其中包含一个表视图控制器(B) 当我更改视图控制器(使用选项卡栏)时,平衡会更新,但我希望这样做,以便在控制器B中删除一行时,控制器a中的标签会更新 我只是在学习目标C,与学员相处不太融洽。以下是与我所说内容相关的代码: 控制器B头Ios 删除控制器(B)中的表行时,如何更新控制器(a)中的标签?,ios,delegates,Ios,Delegates,我有一个视图控制器(a),带有一个显示某些事务余额的标签。在视图控制器中,我有一个容器视图,其中包含一个表视图控制器(B) 当我更改视图控制器(使用选项卡栏)时,平衡会更新,但我希望这样做,以便在控制器B中删除一行时,控制器a中的标签会更新 我只是在学习目标C,与学员相处不太融洽。以下是与我所说内容相关的代码: 控制器B头 #import <UIKit/UIKit.h> @protocol KTTransactionsTableViewControllerDelegate -(v
#import <UIKit/UIKit.h>
@protocol KTTransactionsTableViewControllerDelegate
-(void) updateLabelWithString:(NSString*)string;
@end
@interface KTTransactionsTableViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>
@property (strong, nonatomic)NSMutableArray *transactions;
@property (weak, nonatomic) id<KTTransactionsTableViewControllerDelegate>delegate;
@end
控制器A标头
#import <UIKit/UIKit.h>
#import "KTTransactionsTableViewController.h"
@interface KTSummaryViewController : UIViewController <KTTransactionsTableViewControllerDelegate>
@property (strong, nonatomic) IBOutlet UILabel *remainingBalance;
@property (strong, nonatomic) IBOutlet UIView *dateView;
@property (strong, nonatomic) IBOutlet UIView *categoryView;
@property (strong, nonatomic) IBOutlet UISegmentedControl *segmentedControl;
- (IBAction)segmentValueChanged:(UISegmentedControl *)sender;
-(NSString*)calculateBalance;
@end
如果您能帮助我理解我做错了什么,我们将不胜感激 看起来您从未将控制器A设置为控制器B的代理。由于B位于控制器A的容器视图中,因此在实例化这些控制器时将调用prepareForSegue。您可以将控制器A设置为此处的代理(此代码位于控制器A中)
如果此控制器只有一个segue,则可以省略If语句。如果您使用该子句,请确保在IB中为segue指定的标识符与在此处传递的标识符相同。回答得好。还有,OP:你应该与学员相处融洽。目前,它们仍然是视图控制器之间传递消息的最常见方式。
#import <UIKit/UIKit.h>
#import "KTTransactionsTableViewController.h"
@interface KTSummaryViewController : UIViewController <KTTransactionsTableViewControllerDelegate>
@property (strong, nonatomic) IBOutlet UILabel *remainingBalance;
@property (strong, nonatomic) IBOutlet UIView *dateView;
@property (strong, nonatomic) IBOutlet UIView *categoryView;
@property (strong, nonatomic) IBOutlet UISegmentedControl *segmentedControl;
- (IBAction)segmentValueChanged:(UISegmentedControl *)sender;
-(NSString*)calculateBalance;
@end
#import "KTSummaryViewController.h"
#import "KTCategory.h"
#import "KTCoreDateHelper.h"
#import "KTTransaction.h"
@interface KTSummaryViewController ()
@end
@implementation KTSummaryViewController
@synthesize dateView,categoryView,remainingBalance;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
remainingBalance.textColor = [UIColor lightGrayColor];
}
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self updateLabelWithString:[self calculateBalance]];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(NSString*) calculateBalance
{
//Get all the Income transactions
NSManagedObjectContext *context = [KTCoreDateHelper managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"KTTransaction"
inManagedObjectContext:context];
[request setEntity:entity];
// Specify that the request should return dictionaries.
[request setResultType:NSDictionaryResultType];
// Create an expression for the key path.
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"amount"];
// Create an expression to represent the sum of marks
NSExpression *maxExpression = [NSExpression expressionForFunction:@"sum:"
arguments:@[keyPathExpression]];
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"amountSum"];
[expressionDescription setExpression:maxExpression];
[expressionDescription setExpressionResultType:NSInteger32AttributeType];
// Set the request's properties to fetch just the property represented by the expressions.
[request setPropertiesToFetch:[NSArray arrayWithObject:expressionDescription]];
// Execute the fetch.
NSError *error = nil;
NSArray *amountResult = [context executeFetchRequest:request error:&error];
NSLog(@"%@", amountResult);
NSNumber *sumOfAmounts = [[amountResult objectAtIndex:0] objectForKey:@"amountSum"];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]init];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *sumCurrency = [numberFormatter stringFromNumber:sumOfAmounts];
NSLog(@"%@",sumCurrency);
return sumCurrency;
}
-(void)updateLabelWithString:(NSString *)string{
remainingBalance.text = string;
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([segue.identifier isEqualToString:@"Embed"]) {
KTTransactionsTableViewController *tvc = segue.destinationViewController;
tvc.delegate = self;
}
}