gpt4 book ai didi

ios - 方法不改变变量的值

转载 作者:行者123 更新时间:2023-11-29 02:28:57 25 4
gpt4 key购买 nike

首先,对于这个问题,我很抱歉,但我是 iOS 开发的新手,整个下午我都被困在这个问题上,我试图使用位于另一个 viewController 中的一个 slider 更改 int 变量的值。

行的 slider 位于 View 内的模态窗口中,我认为这是问题所在,但我不知道。

这是代码:

@interface ViewController ()
@property int row, column, actualGame;
@end

- (IBAction)rowChanged:(id)sender {
UISlider *slider = (UISlider *)sender;
int val = slider.value;
[self setRow: val];
self.rowLabel.text = [NSString stringWithFormat:@"%d",val];
}

- (IBAction)columnChanged:(id)sender {
UISlider *slider = (UISlider *)sender;
int val = slider.value;
_column = val;
self.collumLabel.text = [NSString stringWithFormat:@"%d",val];
}

最佳答案

为了在 View Controller 之间传递数据,有几个不同的选项可供您使用。最简单的方法是在第二个 View Controller 上存储对第一个 View Controller 的引用。您可以在第一个 View Controller 的“prepareForSegue”方法中设置该属性。

FirstViewController.h(呈现模态 VC 的 View Controller ):

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController

@property (nonatomic) float sliderValue;

@end

FirstViewController.m

#import "FirstViewController.h"
#import "ViewController.h"

@implementation FirstViewController

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"mySegueDefinedInStoryboard"]) {
ViewController *destinationViewController = (ViewController *)segue.destinationViewController;
destinationViewController.firstViewController = self;
}
}

@end

ViewController.h(模态视图 Controller ):

#import <UIKit/UIKit.h>

@class FirstViewController;

@interface ViewController : UITableViewController

@property (nonatomic, weak) FirstViewController *firstViewController;

@end

ViewController.m

#import "ViewController.h"
#import "FirstViewController.h"

@implementation ViewController

- (IBAction)columnChanged:(UISlider *)sender {
float value = sender.value;
self.firstViewController.sliderValue = value;
}

@end

此方法的缺点是它会创建紧密耦合的代码 - ViewController 需要了解 FirstViewController,这不是最佳选择。一旦您多练习一些,您将了解如何创建自己的委托(delegate),这样您就可以将消息发送到其他 View Controller ,而无需关心它们的类是什么或它们的属性是什么。

Apple Documentation on the Delegate Pattern

关于ios - 方法不改变变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27153901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com