我看到这个主题上有很多帖子,但似乎都没有解决我的问题。
我有一个视图控制器只有一个文本字段,一个导航栏按钮(称为保存)和一个数字/标点键盘。
另一个视图控制器有一个包含2行的静态表视图。
工作流程:当用户点击表格中的第一行时,会出现第二个视图控制器(这已经有效)。 然后用户输入一个数字,当他们点击保存时,应该使用键入的数字来设置表格视图中第1行的详细信息标签。
我已经设置了我的协议和委托但是出了点问题,因为第二个视图控制器没有消失,而且详细信息标签永远不会更新以反映这个类型的数字。
我非常难过。经过大量的代码示例并尝试了很多东西,但仍然没有解决方案。非常感谢任何帮助。
以下是我的两个班级的代码。
第一视图(表格视图) .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
答案 0 :(得分:0)
提供的代码包括:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
priceCalculatorHrRateSettingsViewController *vc = [[priceCalculatorHrRateSettingsViewController alloc] init];
vc.settingsViewDelegate = self;
}
这会在选择单元格时创建一个控制器,但从不显示它,但意外行为被描述为:
...第二视图控制器不会消失...
这些似乎相互矛盾。如果没有准确描述1.预期行为2.观察到的行为和3.产生观察行为的实际实现,任何人都几乎不可能解决这个问题。请不要让我们所有人猜测如何提供帮助。