从一个 ViewController 中获取一个随机数并在第二个 ViewController 中使用它 - 更新

Posted

技术标签:

【中文标题】从一个 ViewController 中获取一个随机数并在第二个 ViewController 中使用它 - 更新【英文标题】:Take a random Number from one ViewController and use it in a second ViewController - Update 【发布时间】:2009-12-29 03:47:51 【问题描述】:

我有两个 ViewController:RedButtonViewController 和 TweetViewController。 RedButtonViewController 在 Textlabels 中生成随机数,我想将数字或标签与 TweetViewController 一起使用。我该怎么做?

感谢您的帮助!

我的 TweetViewController 将在 RedButtonViewController 中使用此代码打开:

- (IBAction)TweetViewController:(id)sender 
    TweetViewController *Tweet = [[TweetViewController alloc] initWithNibName:nil bundle:nil];
    [self presentModalViewController:Tweet animated:YES];

这是我如何生成随机数的示例:

- (IBAction)pushRedButton:(UIButton *)sender  

    int ZahlDerToten;
    ZahlDerToten = arc4random() % 1000000;  

    outputLabel.text = [NSString stringWithFormat:@"You killed %d people.", ZahlDerToten];  

【问题讨论】:

【参考方案1】:

在 TweetViewController 上创建一个属性并在呈现之前设置它:

- (IBAction)TweetViewController:(id)sender 
    // Note: don't put leading capitals on a local variable
    TweetViewController *tweet = [[TweetViewController alloc] initWithNibName:nil bundle:nil];
    tweet.randomNumber = [self generateRandomNumber];
    [self presentModalViewController:tweet animated:YES];
    // Note: You were leaking the view controller
    [tweet release];

另一种解决方案(以及我通常如何做这种事情)是创建一个名为 -initWithNumber: 的新初始化程序(可能比“数字”更具描述性)并这样称呼它:

- (IBAction)TweetViewController:(id)sender 
    TweetViewController *tweet = [[TweetViewController alloc] initWithNumber:[self generateRandomNumber]];
    [self presentModalViewController:tweet animated:YES];
    [tweet release];

-initWithNumber 然后看起来像:

- (TweetViewController *)initWithNumber:(NSInteger)number 
    self = [super initWithNibName:nil bundle:nil];
    if (self != nil) 
        self.number = number;
    
    return self;

【讨论】:

您好,感谢您的回答。我尝试了您的第二种方法,并且总是在我使用 initWithNumber 时,他在行中说: self.number = outputlabel;对成员“编号”的请求不是结构或联合也许问题是,我不知道我必须在你的代码中替换什么,而不知道什么不是......我举了一个例子来说明我如何在上面生成随机数问题。 在这段代码中,我假设会有一个名为“number”的属性,作为示例;我假设 TweetViewController 有一些 ivar 持有这个数字。你几乎肯定不应该传递标签本身。不要使用标签来存储数据。将数据存储在 ivars 中;从这些 ivars 中设置标签的值。这是 Cocoa 所依赖的模型-视图-控制器模式的一个关键特性。因此,如果您将上面的“数字”更改为 UILabel,请不要这样做。在您的示例中它应该是一个 NSUInteger,并且应该有一个类似 countOfKilledPeople 的属性。

以上是关于从一个 ViewController 中获取一个随机数并在第二个 ViewController 中使用它 - 更新的主要内容,如果未能解决你的问题,请参考以下文章

试图从一个 Viewcontroller 中的 UILabel 获取 NSString 以放置在另一个 Viewcontroller 的 UITextView 中

从 Storyboard 中获取 ViewController

如何从一个类中获取数据到 viewController?

从 CgContextRef 获取 UiImage 并将其传递给另一个 ViewController

从 AppDelegate 中的 ViewController 获取参数。

如何从 PySpark DataFrame 中获取随机行?