вызов функции в контроллере представления приложения Utility - PullRequest
0 голосов
/ 14 июля 2010

Я новичок в цели C и у меня есть опыт работы с c ++. Я хочу отобразить значение в метке на экране. Я называю значение метки из MainView.m. Однако метка становится пустой после нажатия кнопки вместо печати значения. В чем проблема? Вот код

MainView.h

@ интерфейс MainView: UIView { int a; }

- (int) vr;

@ конец

MainView.m

- (int) vr { вернуть 100; }

@ конец

MainViewController.h

@ interface MainViewController: UIViewController {

IBOutlet UILabel * myLabel;

NSMutableString * displayString;

MainView * view1; }

@ свойство (неатомное, сохранение) UILabel * myLabel;

@ свойство (nonatomic, retain) NSMutableString * displayString;

  • (IBAction) ShowInfo;

  • (IBAction) нажатие кнопки: (id) отправитель;

@ конец

MainViewController.m

@ synthesize myLabel, displayString;

- (IBAction) кнопка нажатия: (id) отправитель {

[displayString appendFormat:@"%i", view1.vr];
myLabel.text = displayString;}



 - (void)viewDidLoad {
 view1 = [[MainView alloc] init];
 [super viewDidLoad];}

- (void)dealloc {
[view1 dealloc];
[super dealloc];}

Я не упомянул код, который был сгенерирован автоматически. Этого достаточно, чтобы получить полную картину. Я много пытался отладить эту вещь. Я считаю, что IBAction осуществляет прямое командование таким образом, что

myLabel.text = @ "string";

но он не вызывает никакого метода или класса. Какие-нибудь тонкие идеи? Спасибо.

1 Ответ

0 голосов
/ 14 июля 2010

Несколько выпусков:

1
В MainView.h вы объявляете -(id) vr;
И в MainView.m он возвращает int.

2
Возможно, pressButton не связан с нужным событием в Интерфейсном Разработчике (обычно это происходит внутри).
Попробуйте написать для входа в этот метод.

3
Возможно myLabel не подключен к метке в Интерфейсном Разработчике.
Попробуйте установить жестко закодированную строку в текстовое свойство метки.

4
Вы начинаете view1 в каком-то месте?
Можете ли вы опубликовать этот кусок кода тоже?

5
Вы можете использовать [displayString appendFormat:@"%i", view1.vr]; ...

РЕДАКТИРОВАТЬ (из-за изменений в вопросе):

6
Строка [super viewDidLoad]; должна быть первой строкой внутри viewDidLoad.

7
[view1 dealloc]; - никогда не вызывайте dealloc непосредственно на объектах. Позвоните release вместо этого. Единственное место, где вы можете и должны использовать dealloc - это линия [super dealloc]; внутри dealloc метода.

8
Когда вы форматируете свой вопрос / ответ в Stack Overflow, помните, что каждая строка кода должна начинаться как минимум с 4 пробелов (или табуляции). Попробуйте переформатировать свой вопрос, добавив 4 пробела в начале каждой строки кода.

9
Я думаю, что displayString не инициируется. Добавьте следующую строку в viewDidLoad: displayString = [NSMutableString new];

...