Как поставить счет в метке на втором экране после NSTimer? - PullRequest
0 голосов
/ 06 января 2012

У меня есть файл (.m), который подсчитывает щелчки на кнопке

counter=counter +1;
        count.text = [NSString stringWithFormat:@"%i",counter];

После NSTimer появляется новый экран (новый файл .m / .h / .xib), но яхочу набрать очки (нажимает на кнопку) в метке на новом экране.

в файле заголовка экрана first , который я делаю:

IBOutlet UILabel *count;

но после отсчета NStimer я хочу отобразить счет на новом экране (экран 2)

Кто-нибудь знает, как я могу это сделать?

Нужна дополнительная информация?Пожалуйста, спросите меня!

Ответы [ 3 ]

0 голосов
/ 06 января 2012

Просто дайте второму контроллеру вида инициализатор, подобный:

- (id)initWithScoreText:(NSString*)scoreText {
    if ((self = [super initWithNibName:@"MyNibName" bundle:nil])) {
        scoreLabelText = [scoreText copy];
    }

    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];

    //set the text of the label
    scoreLabel.text = scoreLabelText;
}

- (void) dealloc {
    //release the string since we copied it
    [scoreLabelText release];

    [super dealloc];
}

Тогда в вашем первом контроллере представления вы бы сделали что-то вроде:

SecondViewController* newController = [[[SecondViewController alloc] initWithScoreText:count.text] autorelease];
[self.navigationController pushViewController:newController animated:YES];

Редактировать: обновлено на основе отзывов от Paul.s.

0 голосов
/ 06 января 2012

В вашем randomMainVoid: действии установите свойство метки, прежде чем нажать на второе представление. Я не знаю названия вашего secondViewController и того, что вы назвали меткой в ​​secondViewController, поэтому я не могу дать вам точный код здесь.

Можете ли вы сказать мне, что это за имена, и я выложу здесь код для вас.

Вы всегда должны называть свои ViewControllers заглавной буквой, например, Score, а не Score. Но в любом случае:

Score *scoreView = [[Score alloc]initWithNibName:@"Score" bundle:nil];
 [scoreView.count setText:count.text];  //Replace this with the text you want to pass
[self presentModalViewController:scoreView animated:YES];

Или, если вы используете NavigationController, вы можете поместить представление в стек:

[self.navigationController pushViewController:scoreView animated:YES];
0 голосов
/ 06 января 2012

Итак, как вы инициализируете свой таймер?Я предполагаю, что вы используете что-то вроде ...

timerWithTimeInterval:target:selector:userInfo:repeats:

Этот метод использует селектор, который вызывается, когда таймер истекает / срабатывает.В этом методе вы должны отображать свое представление и передавать счет новому создаваемому представлению.Когда ваше представление загружается, вы можете установить счетчик на метку в представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...