将数据传回视图控制器无法正常工作(iOS)

时间:2012-10-15 23:28:47

标签: xcode ios5 delegates

我看到这个主题上有很多帖子,但似乎都没有解决我的问题。

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

enter image description here

另一个视图控制器有一个包含2行的静态表视图。

enter image description here

工作流程:当用户点击表格中的第一行时,会出现第二个视图控制器(这已经有效)。 然后用户输入一个数字,当他们点击保存时,应该使用键入的数字来设置表格视图中第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

1 个答案:

答案 0 :(得分:0)

提供的代码包括:

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

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

  

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

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