我看到有很多关于这个主题的帖子,但似乎没有一个能解决我的问题。
我必须有一个只有一个文本字段、一个导航栏按钮(称为保存)和一个数字/标点符号键盘的视图控制器。
另一个视图控制器具有 2 行的静态表视图。
工作流程:当用户点击表格中的第一行时,会出现第二个视图控制器(这已经有效)。然后用户输入一个数字,当他们点击保存时,输入的数字应该用于设置表格视图中第一行的详细标签。
我已经设置了我的协议和委托,但是出现了问题,因为第二个视图控制器没有消失,而且细节标签也永远不会更新以反映这个输入的数字。
我很困惑。经历了很多代码示例并尝试了很多东西,但仍然没有解决方案。任何帮助是极大的赞赏。
下面是我的两个类的代码。
第一个视图(表格视图).h 文件(hourlyRateDetialLabel 是表格视图中的详细标签):
#import UIKit/UIKit.h
#import "priceCalculatorHrRateSettingsViewController.h"
@interface priceCalculatorSettingsViewController : UITableViewController<SettingsViewControllerDelegate>
@property (strong, nonatomic) IBOutlet UILabel *hourlyRateDetialLabel;
@end
.m 文件
#import "priceCalculatorSettingsViewController.h"
#import "priceCalculatorHrRateSettingsViewController.h"
@interface priceCalculatorSettingsViewController ()
@end
@implementation priceCalculatorSettingsViewController
@synthesize hourlyRateDetialLabel;
- (void)viewDidLoad
{
[super viewDidLoad];
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
priceCalculatorHrRateSettingsViewController *vc = [[priceCalculatorHrRateSettingsViewController alloc] init];
vc.settingsViewDelegate = self;
}
- (void) HourlyRateDidSave:(priceCalculatorHrRateSettingsViewController *)controller didSetHourlyRate:(NSString *)rateValue{
self.hourlyRateDetialLabel.text = rateValue;
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
第二类(带有文本字段和保存按钮的视图).h 文件
#import UIKit/UIKit.h
@class priceCalculatorHrRateSettingsViewController;
@protocol SettingsViewControllerDelegate <NSObject>
- (void)HourlyRateDidSave:
(priceCalculatorHrRateSettingsViewController *)controller didSetHourlyRate:(NSString *)rateValue;
@end
@interface priceCalculatorHrRateSettingsViewController : UIViewController<UITextFieldDelegate>
@property (strong, nonatomic) IBOutlet UITextField *setHourlyRate;
@property (weak, nonatomic) id<SettingsViewControllerDelegate> settingsViewDelegate;
- (IBAction)saveHourlyRateValue:(id)sender;
@end
.m 文件
#import "priceCalculatorHrRateSettingsViewController.h"
@interface priceCalculatorHrRateSettingsViewController ()
@end
@implementation priceCalculatorHrRateSettingsViewController{
}
@synthesize setHourlyRate = _setHourlyRate;
@synthesize settingsViewDelegate;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
//Automatically show the keybaord
[_setHourlyRate becomeFirstResponder];
}
- (void)viewDidUnload
{
[self setSetHourlyRate:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (IBAction)saveHourlyRateValue:(id)sender {
[self.settingsViewDelegate HourlyRateDidSave:self didSetHourlyRate:_setHourlyRate.text];
}
@end