#iphone #objective-c #ios #xcode
#iPhone #objective-c #iOS #xcode
Вопрос:
MyGems.h
#import <UIKit/UIKit.h>
@interface MyGems : UIViewController {
IBOutlet UIImageView *lock1;
Collect.m
#import "Collect.h"
#import "MyGems.h"
@implementation Collect
- (IBAction) unlock {
if (lock1.hidden = NO) {
ruby.hidden = NO;
}
- Я получаю 4 ошибки, кто-нибудь может помочь? Это кажется простым, но меня смущает.
Ответ №1:
Вы почти никогда не должны этого делать. Контроллер представления ( MyGems
, который должен называться как-то так MyGemsViewController
) отвечает за управление этим представлением. Другие классы не должны входить и изменять его IBOutlets. Это вызовет у вас серьезные проблемы, когда представление, управляемое MyGems, выгружается и lock1
неожиданно становится нулевым.
Неясно, что Collect
в этом случае; Я предполагаю, что это другой контроллер представления? Я не понимаю, почему unlock
метод не включен MyGemsViewController
.
Также обратите внимание, что этот код неверен и должен выдавать вам предупреждения о том, что он неверен:
if (lock1.hidden = NO) {
Это присваивает NO
lock1.hidden
. Вы хотели использовать ==
, но вы никогда не должны проверять NO
этот способ. Вы должны сделать это таким образом:
if (! lock1.hidden) {
Вы должны быть осторожны при тестировании логических значений против YES
и NO
. Существует много истинных значений, которые не равны YES
.
Комментарии:
1. amp; Я не могу сделать MyGems ViewController, потому что это приложение для навигации, забыл упомянуть.
2. MyGems — это ViewController.
@interface MyGems : UIViewController
Что вы имеете в виду? Вы читали руководство по программированию контроллера просмотра для iOS? developer.apple.com/library/ios/#featuredarticles /…
Ответ №2:
Вам нужно убедиться, что у вас есть ссылка на lock1 в вашем классе Collect, скорее всего, вы захотите добиться этого, указав ссылку на класс Collect в MyGems, а затем переместив эту логику представления обратно в MyGems, а не в свой класс Collect model
Комментарии:
1. Не могли бы вы опубликовать небольшой фрагмент кода о том, как это сделать? Я редко сталкиваюсь с этими проблемами. Спасибо!