Переключить Просмотр вопроса - PullRequest
1 голос
/ 26 февраля 2011

ОК, я спросил в этот прошлый день, но я обновил его более подробно о проблемах, которые у меня есть. Проблема, с которой я столкнулся, заключается в следующем. Когда я запускаю свое приложение, основной вид выглядит нормально, как и положено. Но когда я нажимаю кнопку, чтобы перейти к следующему представлению, это представление сдвигается примерно на 20 пикселей. Когда я возвращаюсь к главному экрану, он смещается вверх.

Единственное время, когда мое приложение выглядит так, как оно должно быть, - это когда я впервые загружаю его, как только я нажимаю кнопку и начинаю менять представления, каждый раз после того, как я покидаю главное окно, первый раз смещается вверх на 20 пикселей, Главное, когда я вернусь к нему. У меня появилась эта проблема, когда я обновился с xcode 3.2 до xcode 4.0 beta. Я нашел один способ переключения видов, который не заставляет представления сдвигаться вверх, НО, у меня есть проблема с этим способом. У меня есть пользователи, которые вводят данные в view1, при нажатии кнопки он переключается в view2 и отправляет эти данные от 1 до 2. Используя метод switchview, который отображает мои представления как предполагаемые мои данные, не хочет передавать их в view2. Используя метод switchview, который дает мне передачу данных от 1 до 2, в которой я нуждаюсь, он сдвигает просмотры на 20 пикселей. ниже приведены примеры того, что я использую.

- с помощью xcode 4 этот способ заставляет мои представления сдвигаться на 20 пикселей, тогда как в xcode 3.25 он работал отлично, не имел проблем и переносил данные из view1 в view2.

- (IBAction)calculate:(id)sender {

    MaleResultsController *maleResults = [[MaleResultsController alloc] initWithNibName:@"MaleResultsController" bundle:nil];

    [UIView beginAnimations:@"flipping view" context:nil];
    [UIView setAnimationDuration:.75];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown 
                           forView:self.view cache:YES];


    [self.view addSubview:maleResults.view];    

    maleResults.displayAge.text = ageInput.text;
    maleResults.displayHeight.text = heightInput.text;
    maleResults.displayWeight.text = weightInput.text;


    NSString *minWeightString = [[NSString alloc] initWithFormat:@"%.0f", [self getMinWeight]];
    maleResults.displayMinWeight.text = minWeightString;
    [minWeightString release];

    NSString *maxWeightString = [[NSString alloc] initWithFormat:@"%.0f", [self getMaxWeight]];
    maleResults.displayMaxWeight.text = maxWeightString;
    [maxWeightString release];

    NSString *maxBodyFatString = [[NSString alloc] initWithFormat:@"%.0f", [self getMaxBodyFatPercentage]];
    maleResults.displayMaxBodyFatPercentage.text = maxBodyFatString;
    [maxBodyFatString release];

    NSString *bodyFatString = [[NSString alloc] initWithFormat:@"%.0f", [self getBodyFatPercentage]];
    maleResults.displayBodyFat.text = bodyFatString;
    [bodyFatString release];

    NSString *abdomenAvgString = [[NSString alloc] initWithFormat:@"%.2f", [self getAbdomenAvg]];
    maleResults.abdomenAvg.text = abdomenAvgString;
    [abdomenAvgString release];

    NSString *neckAvgString = [[NSString alloc] initWithFormat:@"%.2f", [self getNeckAvg]];
    maleResults.neckAvg.text = neckAvgString;
    [neckAvgString release];

    NSString *abNeckFactorString = [[NSString alloc] initWithFormat:@"%.2f", [self getAbNeckFactor]];
    maleResults.abdomenNeckFactor.text = abNeckFactorString;
    [abNeckFactorString release];

    //

   // [self.navigationController pushViewController:maleResults animated:YES];


    [UIView commitAnimations];

}

- в xcode 4 этот метод работает для правильного переключения видов, но не передает ввод текстового поля в view1 в вывод метки в view2 ..

- (IBAction)calculate:(id)sender {

    MaleBFCResults *maleBFCresults = [[MaleBFCResults alloc] initWithNibName:@"MaleBFCResults" bundle:nil];

    MaleBFCdata *maleBFCData = [[MaleBFCdata alloc] init];
    maleBFCresults.maleData = maleBFCData;
    maleBFCresults.displayAge = ageInput.text;
    maleBFCresults.displayHeight = heightInput.text;
    maleBFCresults.displayWeight = weightInput.text;

    maleBFCresults.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentModalViewController:maleBFCresults animated:YES];
    [maleBFCresults release];

}

Я искал способы исправить эту проблему уже пару недель и не смог найти ничего, что могло бы помочь. Я еще не собрал все свои форумы и расчеты на этом новом, потому что хочу убедиться, что пользовательский интерфейс функционирует должным образом, прежде чем тратить время на написание всего кода для расчетов. Мне нравятся переходы, которые "modalTransitionStyle" дает мне над "setAnimationTransition". Это хорошо, потому что он работает правильно для переключения представлений, я просто не могу заставить его передавать данные из view1 в view2.

Я уверен, что если бы мне пришлось, я всегда мог вернуться к предыдущей версии xcode, но я стараюсь не делать этого, должен делать это, если у кого-то была похожая проблема и есть решение, я был бы очень признателен. может даже быть другой способ отправки данных из view1 в view2, который бы работал, что я еще не пробовал, но я также нашел хороший способ сделать это.

Заранее благодарим за любую помощь в этом вопросе.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2011

Я также столкнулся с той же проблемой смещения представления и решил ее, как показано ниже. Следующий фрагмент кода переключается с viewController на msgViewController.

Откройте файл mainWindow.xib и добавьте объект UIViewController из библиотеки. Измените его класс на класс, который обрабатывает указанный viewController, а затем приходит щелчок. Перейдите в раздел свойств инспектора атрибутов и установите соответствующее имя пера для контроллера, а затем сохраните и закройте IB.

И код меняется на

 -(void) flipToBack
 {
 [UIView beginAnimations:nil context:NULL];
 [UIView setAnimationDuration:0.8];
 [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:window cache:YES];

 [viewController.view removeFromSuperview];
 [tabBarController.view removeFromSuperview];
 [self.window addSubview:[msgViewController view]];
 [UIView commitAnimations];
 }

Надеюсь, это поможет вам !!

Если это так, пожалуйста, свяжитесь.

0 голосов
/ 26 февраля 2011

Отрегулируйте рамку этих представлений относительно строки состояния.

Однако я бы не стал полагаться на объект делегата приложения для обработки нескольких представлений.Имейте контроллер корневого представления, который заботится об этих представлениях.

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