Я смущен, признав, что мне потребовалось некоторое время, чтобы понять, что эта модель в MVC - это еще один класс, который вы ссылаетесь на данные и логику приложения (я надеюсь, что это правильно). Раньше я сбивался с толку и в конечном итоге помещал все в файл контроллера. Учебники, которые я использовал, не помогли, используя массивы в контроллере. Я провел выходные, проходя через вопросы, связанные с stackoverflow, и наткнулся на проект, в котором у вас есть два огня - только один может быть включен одновременно. Я думал, что это будет хороший проект для того, чтобы увидеть, понял ли я основы MVC.Обратная связь кода и понимание MVC
Я связал кнопки и «огни» зрения до контроллера. Кнопки запускают метод - button1pressed и button2pressed. Затем я проверяю, включен или выключен свет (установлен в свойство), а затем вызывается соответствующий метод в файле модели - turnLightOn или turnLightOff. Все работает так, как я этого хотел.
Мне недолго было набрать его; методы могут быть более полными. Я могу передать ярлыки, а также изменить цвета фона и состояния в вызове метода вместо того, чтобы делать их в контроллере.
Во-первых, есть ли у меня правильная идея вызова метода модели, подобного этому? Я прав, чтобы выделить и инициализировать экземпляр модели в представлении, загрузив, и задали свойства там? Я использовал себя правильно - это необходимо для всех ссылок на контроллер
Свойства?
Любая обратная связь также очень ценится. Я использую xcode 5 (интернет-соединение с мусором) и цель c (пока я не получу его).
Спасибо за ваше время, и мудрость
#import <UIKit/UIKit.h>
#import "modelLight.h"
@interface ViewController : UIViewController
- (IBAction)button1Pressed:(id)sender;
- (IBAction)button2Pressed:(id)sender;
@property (weak, nonatomic) IBOutlet UITextField *lightOne;
@property (weak, nonatomic) IBOutlet UITextField *lightTwo;
@property (strong, nonatomic) NSString *lightOneState;
@property (strong, nonatomic) NSString *lightTwoState;
@property (strong, nonatomic) modelLight *model;
@end
#import "ViewController.h"
#import "modelLight.h"
@interface ViewController()
@end
@implementation ViewController
@synthesize lightOne, lightTwo, lightOneState, lightTwoState;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//Set light one state to on
self.lightOneState = @"on";
self.lightOne.text = @"On";
self.lightOne.backgroundColor = [UIColor yellowColor];
//Set light two state to off
self.lightTwoState = @"off";
self.lightTwo.text = @"Off";
self.lightTwo.backgroundColor = [UIColor grayColor];
//Alloc + init instance of model class
self.model = [[modelLight alloc]init];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)button1Pressed:(id)sender {
//check if light one is on
if ([lightOneState isEqual: @"on"]) {
self.lightOne.text = [self.model turnLightOffText:self.lightOne.text];
self.lightOneState = @"off";
self.lightOne.backgroundColor = [UIColor grayColor];
self.lightTwo.text = [self.model turnLightOnText:self.lightTwo.text];
self.lightTwoState = @"on";
self.lightTwo.backgroundColor = [UIColor yellowColor];
}
//if light one is off
else {
//turn light one on
self.lightOne.text = [self.model turnLightOnText:self.lightOne.text];
self.lightOneState = @"on";
self.lightOne.backgroundColor = [UIColor yellowColor];
//turn light two off
self.lightTwo.text = [self.model turnLightOffText:self.lightTwo.text];
self.lightTwoState = @"off";
self.lightTwo.backgroundColor = [UIColor grayColor];
}
}
- (IBAction)button2Pressed:(id)sender {
//check if light two is on
if ([lightTwoState isEqual: @"on"]) {
//turn light two off
self.lightTwo.text = [self.model turnLightOffText:self.lightOne.text];
self.lightTwoState = @"off";
self.lightTwo.backgroundColor = [UIColor grayColor];
//turn light one on
self.lightOne.text = [self.model turnLightOnText:self.lightOne.text];
self.lightOneState = @"on";
self.lightOne.backgroundColor = [UIColor yellowColor];
}
//if light two is off
else {
//turn light two on
self.lightTwo.text = [self.model turnLightOnText:self.lightOne.text];
self.lightTwoState = @"on";
self.lightTwo.backgroundColor = [UIColor yellowColor];
//turn light one off
self.lightOne.text = [self.model turnLightOffText:self.lightOne.text];
self.lightOneState = @"off";
self.lightTwo.text = @"On";
return text;
}
@end
Это относится к http://codereview.stackexchange.com. –