如何将 int 值加载到文本字段并显示在另一个集合视图控制器的标签上

Posted

技术标签:

【中文标题】如何将 int 值加载到文本字段并显示在另一个集合视图控制器的标签上【英文标题】:how to load int value to the textfield and display on label on another collection view controller 【发布时间】:2014-05-27 08:58:39 【问题描述】:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

     if (indexPath.item > 0 ) 
     
       myNumber = indexPath.item;
       NSLog(@"Item is %i", myNumber);

       NSString *myNewString = [@(myNumber) stringValue];
       [txt setText:myNewString];

       self.datastring=txt.text;

       WeddingViewController *wed=[[WeddingViewController alloc]init];
       [self presentViewController:wed animated:YES completion:nil];
    

在第二个集合视图的viewDidLoad 中.....

- (void)viewDidLoad

     [super viewDidLoad];
     self.lbl.text =self.datastring;

【问题讨论】:

【参考方案1】:

您可以像这样为您的WeddingViewController 创建一个自定义构造函数(init)方法以及一个保存该值的属性:

在您的WeddingViewController.h 文件中,创建构造方法:

@property (nonatomic, assign) int storedIntValue;

-(id)initWithValue:(int)intValue;

然后在你的实现文件中,你可以去:

-(id)initWithValue:(int)intValue

    self = [super init];

    if(self)
    
        self.storedIntValue = intValue;
    

    return self;


-(void)viewDidLoad

    ....

    self.lbl.text = [[NSString alloc] initWithFormat:@"%d", self.storedIntValue];

最后,在你推送WeddingViewController的地方,你可以去:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

     if (indexPath.item > 0 ) 
     
       myNumber = indexPath.item;
       NSLog(@"Item is %i", myNumber);

       NSString *myNewString = [@(myNumber) stringValue];
       [txt setText:myNewString];

       self.datastring=txt.text;

       // ----------------------------------------------------
       // Notice use of the "initWithIntValue:" method
       //
       // note: is myNumber meant to be indexPath row ? 
       // ----------------------------------------------------
       WeddingViewController *wed=[[WeddingViewController alloc] initWithValue:myNumber];
       [self presentViewController:wed animated:YES completion:nil];
    

否则,替代方法是将 int 值存储在您的应用程序中可以全局访问的某个位置,例如单例,或者如果它是用户默认的东西,您可以使用:

// save value into NSUserDefaults if it's appropriate
[[NSUserDefaults standardDefaults] setValue:[NSNumber numberWithInt:3] forKey:@"myIntValue"];
[NSUserDefaults synchronize];

// get value from NSUserDefaults
int myIntValue = [[[NSUserDefaults standardDefaults] valueForKey:@"myIntValue"] integerValue];

这有帮助吗?

【讨论】:

【参考方案2】:

你必须这样做,你可以在WeddingViewController.h中制作字符串属性并在viewDidLoad中直接访问它,

 @property (nonatomic, assign) NSString dataString;

并且在视图中会出现

    -(void)viewWillAppear:(BOOL)animated
    [super viewWillAppear:animated];
     self.lbl.text = dataString;
    

    and when make WeddingViewController object give property like this,      

    WeddingViewController *wed=[[WeddingViewController alloc]init];
    wed.dataString = dataString;
    [self presentViewController:wed animated:YES completion:nil];

【讨论】:

以上是关于如何将 int 值加载到文本字段并显示在另一个集合视图控制器的标签上的主要内容,如果未能解决你的问题,请参考以下文章

如何将一个文本字段中的值同时显示到另一个文本字段

Redux:如何在另一个值更改时更新一个值?

使用一个视图控制器从用户那里获取文本,将该值添加到数据库并在另一个 VC 中显示它[关闭]

如何检查一个文件的值是不是包含在另一个文本文件中? (perl 脚本)

在文本字段中输入值后如何显示*

如何在 React Js 中编辑输入值?