このトピックに関する投稿はたくさんありますが、どれも私の問題を解決していないようです。
テキストフィールド、ナビゲーションバーボタン(保存と呼ばれる)、および数字/句読点キーボードだけを備えたView Controllerが必要です。
もう 1 つのビュー コントローラーには、2 行の静的テーブル ビューがあります。
ワークフロー: ユーザーがテーブルの最初の行をタップすると、2 番目のビュー コントローラーが表示されます (これは既に機能しています)。次に、ユーザーが数値を入力し、[保存] をタップすると、入力した数値を使用してテーブル ビューの 1 行目の詳細ラベルを設定する必要があります。
プロトコルとデリゲートを設定しましたが、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
2 番目のクラス (テキストフィールドと保存ボタンのあるビュー) .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