从一个ViewController中取一个随机数并在第二个ViewController中使用它 - Update
问题描述:
我有两个ViewController:RedButtonViewController和TweetViewController。 RedButtonViewController在文本标签中生成随机数字,我想用TweetViewController来使用数字或标签。我怎样才能做到这一点?从一个ViewController中取一个随机数并在第二个ViewController中使用它 - Update
感谢您的帮助!
我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];
答
在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'是什么结构或工会唠叨 也许问题是,我不知道我必须在您的代码中取代什么和不... 我把我如何生成随机在问题上面的数字。 – Flocked 2009-12-29 04:40:18
在这段代码中,我假设会有一个名为“number”的属性,就像一个例子;我假设TweetViewController有一些持有这个数字的伊娃。你几乎肯定不应该通过标签本身。不要使用标签来存储数据。将数据存储在ivars中;从这些ivars设置标签的值。这是Cocoa依赖的Model-View-Controller模式的一个关键特性。所以如果你把上面的“数字”改成了UILabel,不要这样做。在你的例子中它应该是一个NSUInteger,并且应该有一个像countOfKilledPeople这样的属性。 – 2009-12-29 05:10:32