2009-12-29 2 views
0

У меня есть два ViewControllers: RedButtonViewController и TweetViewController. RedButtonViewController генерирует случайные числа в Textlabels, и я хочу использовать число или метку с помощью TweetViewController. Как я могу это сделать?Возьмите случайное число из одного ViewController и используйте его во втором ViewController - Update

Благодарим за помощь!

Мой TweetViewController будет открыт с этим кодом в RedButtonViewController:

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

Вот Exemple того, как я генерировать случайное число:

- (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; 
} 
+0

привет спасибо за ваш ответ. Я попробовал свой второй метод и всегда, когда я использую initWithNumber, он говорит в строке: self.number = outputlabel; Запрос для члена'number'is что-то noot структуры или объединения Возможно, проблема в том, что я не знаю, что мне нужно заменить в вашем коде, а что нет ... Я поставил пример того, как я генерирую случайное номер выше в вопросе. – Flocked

+0

В этом коде я предположил, что в качестве примера будет свойство «число»; Я предполагаю, что у TweetViewController есть несколько иваров с этим номером. Вы почти наверняка не должны проходить сам лейбл. Не используйте метки для хранения данных. Хранить данные в ivars; установить значения меток из этих ivars. Это ключевая особенность шаблона Model-View-Controller, на который опирается Cocoa. Поэтому, если вы изменили «число» выше, чтобы быть UILabel, не делайте этого. В вашем примере должен быть NSUInteger, и должно быть свойство, подобное countOfKilledPeople. –

Смежные вопросы