Струнные проблемы - PullRequest
       2

Струнные проблемы

0 голосов
/ 29 августа 2011

Очень глупый вопрос от нуба.

У меня есть действие, которое устанавливает строку метки.

- (IBAction) changeProductText:(NSString *)str{ lblProductTxt.text = str; }

Это строка, которую я хочу установить:

TestText = [NSString stringWithFormat:@"Hi"];

И вот как я это делаю:

[self.navigationController pushViewController:nextController animated:YES];

[nextController changeProductText: TestText];

Моя проблема в том, что она не устанавливает строку на что-либо случайное, что происходит в строке. Может произойти сбой при нажатии на ячейку, а может и нет, поэтому я делаю что-то не так.

Ответы [ 3 ]

1 голос
/ 29 августа 2011

stringWithFormat предоставляет вам автоматически выпущенный формат, не видя больше кода, я предполагаю, что он попал в пул автоматического выпуска, и вы пытаетесь получить доступ к мусору, который был вашей строкой.

0 голосов
/ 29 августа 2011

Это точная последовательность операторов?

[self.navigationController pushViewController:nextController animated:YES];
[nextController changeProductText:TestText];

Я не уверен на 100%, но я верю, что вторая строка не будет выполнена, пока не будет нажат следующий контроллер.Попробуйте поменять их.(1-е создание и инициализация nextController) 2-е назначение всех значений, которые вы хотите передать в nextController 3-е нажатие nextViewController в стек контроллеров представления

[nextController changeProductText:TestText];
[self.navigationController pushViewController:nextController animated:YES];
0 голосов
/ 29 августа 2011

Единственный параметр IBAction - это отправитель:

- (IBAction) clickMyButton: (id) отправитель;

Строка вряд ли является действительным отправителем для действия, поэтому независимо от того, что вы устанавливаете lblProductTxt.text, это не строка, а отправитель, выполняющий действие.

В вашем методе действияВы, конечно, можете установить lblProductTxt.text.Вам нужно выяснить, где вы получили строку.

Обновление

Из ваших комментариев я делаю вывод, что у вас нет IBAction , выпросто есть метод void.Ваше использование IBAction поставило меня не на ту ногу.Объявите это как:

- (void) changeProductText: (NSString *) newText;

Опустите указатель (IBAction), так как это необходимо только для реальных методов действий IB.

Независимо от того, используете ли вы

NSString *testText = [NSString stringWithFormat: @"Hi"];

или

NSString *testText = [NSString stringWithString: @"Hi"];

Результат точно одинаков: anавтоматически выпущен NSString с текстом "Hi".Только способ, которым он был создан, немного отличается.Если один работает, а другой вылетает, то то же самое не так, и вам просто повезло, что он не вылетает.

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

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