在视图控制器之间传输浮点值 [重复]

Posted

技术标签:

【中文标题】在视图控制器之间传输浮点值 [重复]【英文标题】: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

【问题讨论】:

【参考方案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 此问题已关闭。如果您对代码有具体问题,请创建一个新问题。

以上是关于在视图控制器之间传输浮点值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在视图控制器之间传输 Xcode 8 上的绘图?

如何在父视图控制器和子视图控制器之间传输数据

在多个视图控制器之间传递数据[重复]

在视图控制器之间传递 iOS 10 Segue 中的数据 [重复]

在视图控制器之间传递数据而不使用 segues [重复]

在视图控制器之间的 NSString 中传递数据 - 目标 C [重复]