【问题标题】:Transfer float values between view controllers [duplicate]在视图控制器之间传输浮点值 [重复]
【发布时间】:2014-06-19 16:07:04
【问题描述】:

我希望将浮点值从一个视图控制器传输到另一个视图控制器。 我能找到的所有教程都只给出了文本传输的例子,而不是值。

我有一个设置页面,允许用户单击具有常量float 值的按钮,例如Tear = 0.13Engine = 0.15 等。我希望将这些值传输到根视图控制器,一次按钮 被点击。

我创建了一个 push segue,并添加了一些来自 prepareforSegue: 教程的代码 源视图控制器的实现文件。

谁能帮我下一步,这是转移float值的代码 从源控制器到目标(根)控制器。 这是我目前在源视图控制器中prepareforSegue:sender: 中的内容。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([[segue identifier] isEqualToString:@"SendInfo"]) {
         ViewController *detailViewController = [segue destinationViewController];

这就是CalcViewController 实现文件在IBAction 区域中的外观。

#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.

        if ([[segue identifier] isEqualToString:@"SendInfo"]) {
            ViewController *detailViewController = [segue destinationViewController];}
}

- (IBAction)WT2:(id)sender {


}

- (IBAction)WT:(id)sender {

    float Tear=0.13;
}

- (IBAction)Car1:(id)sender {

    float Litre=0.13;

}

- (IBAction)Car2:(id)sender {

    float Litre=0.15;
}

- (IBAction)Car3:(id)sender {

    float Litre=0.25;
}

- (IBAction)MP1:(id)sender {

    float Net1=0.03;
}

- (IBAction)MP2:(id)sender {
}

@end

【问题讨论】:

    标签: ios objective-c cocoa-touch uiviewcontroller uistoryboardsegue


    【解决方案1】:

    您的问题是您不会将 Tear/Engine/Litre 值存储在任何地方。据我所知,您想在ViewController 的实例上设置一个浮点值。为对象设置属性很简单。

    ViewController.h

    @interface ViewController : UIViewController
    @property (nonatomic) float litre;
    @property (nonatomic) float tear;
    @end
    

    CalcViewController.m

    @interface CalcViewController ()
    @property (nonatomic) float selectedLitre;
    @property (nonatomic) float selectedTear;
    @end
    
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        if ([[segue identifier] isEqualToString:@"SendInfo"]) {
            ViewController *detailViewController = [segue destinationViewController];
            detailViewController.litre = self.selectedLitre;
            detailViewController.tear = self.selectedTear;
            //present detailViewController here...
        }
    }
    
    - (IBAction)WT:(id)sender {
       self.selectedTear = 0.13;
    }
    
    - (IBAction)Car1:(id)sender {
        self.selectedLitre = 0.13;
    }
    

    【讨论】:

    • 我注意到您创建了 ViewController 的 *detailViewController 对象 - 但在 ViewController.h 中没有为浮点值调用该对象。对吗??
    • 你好,克里斯!我实现了你的代码,但从那以后项目就崩溃了。这似乎是内存泄漏,但我不确定问题出在您的代码中。有什么建议么?似乎如果我选择其中一个按钮,Tear 或 Litre,那么它就会崩溃..
    • @user1641906 此问题已关闭。如果您对代码有具体问题,请创建一个新问题。
    猜你喜欢
    • 2019-08-12
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多