从一个 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
从 CgContextRef 获取 UiImage 并将其传递给另一个 ViewController