0

我看到有很多关于这个主题的帖子,但似乎没有一个能解决我的问题。

我必须有一个只有一个文本字段、一个导航栏按钮(称为保存)和一个数字/标点符号键盘的视图控制器。

在此处输入图像描述

另一个视图控制器具有 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
4

1 回答 1

0

提供的代码包括:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
 priceCalculatorHrRateSettingsViewController *vc = [[priceCalculatorHrRateSettingsViewController alloc] init];
vc.settingsViewDelegate = self;
}

这会在选择单元格但从不显示它时创建一个控制器,但意外行为被描述为:

...第二个视图控制器不会消失...

这些似乎相互矛盾。如果没有对 1. 预期行为 2. 观察到的行为和 3. 产生观察到的行为的实际实现的准确描述,任何人几乎不可能解决这个问题。请不要让我们所有人猜测如何提供帮助。

于 2012-10-16T15:07:43.887 回答