0

このトピックに関する投稿はたくさんありますが、どれも私の問題を解決していないようです。

テキストフィールド、ナビゲーションバーボタン(保存と呼ばれる)、および数字/句読点キーボードだけを備えた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
4

1 に答える 1

0

提供されるコードには以下が含まれます。

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

これにより、セルが選択されたときにコントローラーが作成されますが、それが表示されることはありませんが、予期しない動作は次のように説明されています。

...2nd View Controllerが消えない...

これらは互いに矛盾しているようです。1. 予想される動作 2. 観察された動作 3. 観察された動作を生成する実際の実装の正確な説明がなければ、この問題を解決することはほとんど不可能です。私たち全員に、どのように支援するかを推測するように頼まないでください.

于 2012-10-16T15:07:43.887 に答える