у них курс по swift с нуля 3 апреля(вебинары) планирую записаться, никто не хочет со мной?)
Я с тобой! Только я до 3-го не дождался, уже начал заниматься, если хочешь подключайся по скайпу можно вместе разбираться, в режиме демонстрации экрана
MODERATORIAL (Автоматическое сообщение от asr)
Недавно перешёл с Visual Studio на XCode 10 - objective-c, меня заинтерисовали смарт часы, хотелось-бы написать App под смарт часы. Язык очень интересный, но к сожалению там нет полной документации с примерами по программированию на Objective-C как это реализованно в Visual Studio - MSDN. Когда создаю новый проект и выбераю watchOS, XCode почему-то создаёт два проекта, один помойму для iPhone другой для watchOS. Когда компилирую код, стартует iPhone XR Simulator, а мне нужен watchOS Simulator, когда выбераешь watchOS Simulator то app не запускается в watchOS. Так-же хотелось бы изучить GameKit. К сожалению новых видео и книг по этой теме в интернете нет.
Сообщение отредактировал lexx821: 04.12.2018, 21:35:58
Вот так выглядет, XCode должен запускать не IPhone XR Simulator а, SmartWatch 4 Simulator, я где-то в интернете нашёл что можно в Hardware выбрать SmartWatch Simulator, вместо iPhone Simulator, появляется окно SmartWatch, но там App не отображается, App отображается только на IPhone XR.
Сообщение отредактировал lexx821: 05.12.2018, 02:28:07
Вот калькулятор для iOS на Objective-C:
// ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property NSInteger a; @property NSInteger b; @property NSInteger op; @property NSString* buf; @property BOOL isbeginn; @property (weak, nonatomic) IBOutlet UITextField *txtField; @end // ViewController.m #import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize a; @synthesize b; @synthesize op; @synthesize buf; @synthesize isbeginn; - (void)viewDidLoad { [super viewDidLoad]; op = 0; a = 0; b = 0; isbeginn = true; buf = [NSString stringWithString:@"0"]; } -(void) setNumber:(int) v { if(v == 0) { isbeginn = true; buf = [NSString stringWithFormat:@"%d", v]; [_txtField setText: buf]; return; } if(isbeginn == true) { buf = [NSString stringWithFormat:@"%d", v]; isbeginn = false; } else buf = [buf stringByAppendingFormat:@"%d", v]; [_txtField setText: buf]; } - (IBAction)cmd0:(id)sender { [self setNumber:0]; } - (IBAction)cmd1:(id)sender { [self setNumber:1]; } - (IBAction)cmd2:(id)sender { [self setNumber:2]; } - (IBAction)cmd3:(id)sender { [self setNumber:3]; } - (IBAction)cmd4:(id)sender { [self setNumber:4]; } - (IBAction)cmd5:(id)sender { [self setNumber:5]; } - (IBAction)cmd6:(id)sender { [self setNumber:6]; } - (IBAction)cmd7:(id)sender { [self setNumber:7]; } - (IBAction)cmd8:(id)sender { [self setNumber:8]; } - (IBAction)cmd9:(id)sender { [self setNumber:9]; } - (IBAction)cmdDiv:(id)sender { op = 1; a = [buf intValue]; [self setNumber:0]; } - (IBAction)cmdMult:(id)sender { op = 2; a = [buf intValue]; [self setNumber:0]; } - (IBAction)cmdAdd:(id)sender { op = 3; a = [buf intValue]; [self setNumber:0]; } - (IBAction)cmdSub:(id)sender { op = 4; a = [buf intValue]; [self setNumber:0]; } - (IBAction)cmdResult:(id)sender { b = [buf intValue]; switch(op) { case 1: if(a == 0 || b == 0) { [_txtField setText:@"Error"]; isbeginn = true; return; } b = a / b; break; case 2: b = a * b; break; case 3: b = a + b; break; case 4: b = a - b; break; } buf = [NSString stringWithFormat:@"%d", b]; [_txtField setText:buf]; } - (IBAction)cmdReset:(id)sender { a = 0; b = 0; isbeginn = true; [self setNumber:0]; } @end
Вот дизайн:
Вот результат работы App:
Я нашёл ошибку в калькуляторе, сегодня я исправлю её.
А почему не на свифте фигачишь? Время экономит
Слишком много языков в голову не вместится, под Android ведь придумали свой язык - котлин, кто-нибудь пишит на нём App? На Java проще App разрабатывать, так и на obj-c...
Сообщение отредактировал lexx821: 09.12.2018, 20:21:00
Вот код подправил:
@synthesize txtField;
-(void) setNumber:(int) v { if(v == 0 && isbeginn == true) // { buf = [NSString stringWithFormat:@"%d", v]; [txtField setText: buf]; return; } if(isbeginn == true) { buf = [NSString stringWithFormat:@"%d", v]; isbeginn = false; } else buf = [buf stringByAppendingFormat:@"%d", v]; [txtField setText: buf]; }
- (IBAction)cmdDiv:(id)sender { op = 1; a = [buf intValue]; isbeginn = true; [self setNumber:0]; } - (IBAction)cmdMult:(id)sender { op = 2; a = [buf intValue]; isbeginn = true; [self setNumber:0]; } - (IBAction)cmdAdd:(id)sender { op = 3; a = [buf intValue]; isbeginn = true; [self setNumber:0]; } - (IBAction)cmdSub:(id)sender { op = 4; a = [buf intValue]; isbeginn = true; [self setNumber:0]; }
- (IBAction)cmdReset:(id)sender { a = 0; b = 0; op = 0; isbeginn = true; [self setNumber:0]; }
Хочу разработать App в котором вводят имя и возраст, допустим "Чак Норрис" и 78, потом при нажатие кнопки "OK", вызывается новая вьюшка и отображается строка "Привет Чак Норрис вам 78 лет". Добавляю новую вьюшку, нажимаю на кнопку "Ок", новая вьюшка отображается но выдаётся такая строка "Привет null вам null лет". Пытаюсь добавить новый контроллер и привязать его к вьюшки, программа вылетает с ошибкой, в логах такое: "...terminating with uncaught exception of type NSException...".
Посмотрел видеоурок на ютубе "Mamma mia! Готовим вкусное приложение на Objective C [GeekBrains]", повторил как она сделала, ничего не работает, та же ошибка...
Ещё кое-что в Xcode 10 произошли изменения, исчез список с компонентами:
В предыдущих версиях был список с компонентами с правой стороны внизу:
В новой версии Xcode список с компонентами запрятан в кнопке сверху справа:
Сейчас все новые проекты на Котлине пишут.
Недавно наткнулся на flutter, это новая SDK чтобы писать программы под iOS и Android, за основу там взят язык Dart, когда гугл закончит с проектом Android и перейдёт на новый - FuchsiaOS, скорей всего будут программисты на Flutter разрабатывать App для FuchsiaOS... Кстате есть ещё Ionicframework спомощью него можно тоже лепить App под iOS и Android, но как я понимаю там App получаются на HTML5 и Javascript, типа в Blank Activity добавят UIWebView/WebView а дальше будет полность срабатывать по javascript....
Кстате по flutter есть видеоурок на ютубе: "Мобильный фреймворк Flutter от Google — взгляд Android разработчика [GeekBrains]"
Хочу разработать App в котором вводят имя и возраст, допустим "Чак Норрис" и 78, потом при нажатие кнопки "OK", вызывается новая вьюшка и отображается строка "Привет Чак Норрис вам 78 лет".
Получилось вот результат:
//ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *txtName; @property (weak, nonatomic) IBOutlet UITextField *txtAge; @end // ViewController.m #import "ViewController.h" #import "NewViewController.h" @interface ViewController () @end @implementation ViewController @synthesize txtName; @synthesize txtAge; -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if([segue.identifier isEqualToString:@"ShowView2"]) { NewViewController *nvc = segue.destinationViewController; nvc.data = [NSString stringWithFormat:@"Hello %@, you are %@ year(s) old!", txtName.text, txtAge.text]; } } - (void)viewDidLoad { [super viewDidLoad]; } @end //NewViewController.h #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface NewViewController : UIViewController @property (weak, nonatomic) IBOutlet UILabel *lbResult; @property (strong, nonatomic) NSString *data; @end NS_ASSUME_NONNULL_END //NewViewController.m #import "NewViewController.h" @interface NewViewController () @end @implementation NewViewController @synthesize lbResult; @synthesize data; - (void)viewDidLoad { [super viewDidLoad]; lbResult.text = data; } @end
Нужно было всего лишь вот это сделать:
//NewViewController.h @property (strong, nonatomic) NSString *data; //NewViewController.m //... @synthesize data; //... - (void)viewDidLoad { [super viewDidLoad]; lbResult.text = data; } // ViewController.m #import "ViewController.h" #import "NewViewController.h" // ... -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if([segue.identifier isEqualToString:@"ShowView2"]) { NewViewController *nvc = segue.destinationViewController; nvc.data = [NSString stringWithFormat:@"Hello %@, you are %@ year(s) old!", txtName.text, txtAge.text]; } }
P.S. Самое главное забыл:
нужно указать в настройках сегвей идентификатор, иначе ничего не сработает, в данной ситуации у нас ID называется "ShowView2":
if([segue.identifier isEqualToString:@"ShowView2"]) { NewViewController *nvc = segue.destinationViewController; nvc.data = [NSString stringWithFormat:@"Hello %@, you are %@ year(s) old!", txtName.text, txtAge.text]; }
Сообщение отредактировал lexx821: 18.12.2018, 13:59:33
[ { "description": "2 rooms apartment in Berlin", "city": "10115 Berlin", "price" : "1042", "living_space" : "45", "rooms" : "2", "image" : "http://..../1.jpg" }, { "description": "3 rooms apartment in Berlin", "city": "10115 Berlin", "price" : "2000", "living_space" : "126,5", "rooms" : "3", "image" : "http://..../2.jpg" }, { "description": "1 rooms apartment in Berlin", "city": "10115 Berlin", "price" : "700", "living_space" : "30", "rooms" : "1", "image" : "http://..../3.jpg" } ]
Чтобы прочитать json достаточно этого кода:
NSError *error; NSString *url_string = [NSString stringWithFormat:@"htpp://.../jsontest/test3.json"]; NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url_string] ]; NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; NSLog(@"json: %@", json);
Вот код чтобы спарсить json:
dataNameArray = [[NSMutableArray alloc] init]; dataImageArray = [[NSMutableArray alloc] init]; for(NSArray *a in json) { [dataNameArray addObject:[a valueForKey:@"description"]]; [dataImageArray addObject:[a valueForKey:@"image"]]; }
Вот полный код:
// ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> @property (weak, nonatomic) IBOutlet UITableView *tblResults; @property (strong, nonatomic) NSMutableArray *dataNameArray; @property (strong, nonatomic) NSMutableArray *dataImageArray; @end
// ViewController.m #import "ViewController.h" #import "ViewControllerResults.h" @interface ViewController () <UITableViewDataSource, UITableViewDelegate> @end @implementation ViewController @synthesize tblResults; @synthesize dataNameArray; @synthesize dataImageArray; - (void)viewDidLoad { [super viewDidLoad]; NSError *error; NSString *url_string = [NSString stringWithFormat:@"htpp://.../jsontest/test3.json"]; NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url_string] ]; NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; dataNameArray = [[NSMutableArray alloc] init]; dataImageArray = [[NSMutableArray alloc] init]; for(NSArray *a in json) { [dataNameArray addObject:[a valueForKey:@"description"]]; [dataImageArray addObject:[a valueForKey:@"image"]]; } NSLog(@"json: %@", json); } -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if([segue.identifier isEqualToString:@"selectItem"]) { ViewControllerResults *vcr = segue.destinationViewController; //NSIndexPath *selectedIndexPath = [tblResults indexPathForSelectedRow]; vcr.data = @"AAA"; } } #pragma mark - UITableView DataSource Mehtods -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return dataNameArray.count; } -(void)reloadData { [tblResults reloadData]; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath { static NSString *cellId = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId forIndexPath:indexPath]; NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:dataImageArray [indexPath.row ]]]; cell.imageView.image = [UIImage imageWithData:imageData]; cell.textLabel.text = dataNameArray[indexPath.row]; cell.detailTextLabel.text = [NSString stringWithFormat:@"%d", (int)indexPath.row + 1]; return cell; } @end
// ViewControllerResults.h #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface ViewControllerResults : UIViewController @property (weak, nonatomic) IBOutlet UILabel *lbResults; @property (strong, nonatomic) NSString *data; @end NS_ASSUME_NONNULL_END
// ViewControllerResults.m #import "ViewControllerResults.h" @interface ViewControllerResults () @end @implementation ViewControllerResults @synthesize lbResults; @synthesize data; -(void)viewDidLoad { [super viewDidLoad]; lbResults.text = data; } @end
Сообщение отредактировал lexx821: 03.01.2019, 22:36:43
А почему не на свифте фигачишь?
Уже фигачу... нужно знать только это:
var name:String = "someone" var age:Int = 32 var say:String = "Hello \(name) you are \(age) old!" let x = 3 print(say) for i in 1...3 { print("says \(i) times: \(say)") } print(x) var array = ["Anna", "Anton", "Andy"] for s in array { print(s) } array.append("John") for s in array { print(s) } var ii=0 repeat { print("Say \(ii) time(s).") ii=ii+1 } while ii < 3 for iii in (1...10).reversed() { print(iii) } for xx in stride(from: 1, to: 10, by: 3) { print(xx) } func say_hello(name:String, age:Int) -> String { return "Hello \(name), you are \(age) yaers old!" } print("\(say_hello(name: "Roman", age:30))") var val:String? // Maybe val is eq null val="String" if val != nil { print(val!) } let grade = 90 switch grade { case 0...50: print("Bad") case 51...100: print("Good") default: print("?") } class Person { var age: Int var name: String init(name: String, age: Int) { self.name = name self.age = age } func say() { print("Hello \(name), you are \(age) years old") } } let p = Person(name: "Anton", age: 40) p.say()
мелкософт уже разработал компилятор Swift под винду
В общем, получилось разработать простенький App для часов на Swift.
проблема была вот в чём:
Нужно было выбрать не iPhone эмулятор, а iPhone XS Max + Watch Series 4
вот код:
import WatchKit import Foundation class InterfaceController: WKInterfaceController { // Label @IBOutlet weak var lbText: WKInterfaceLabel! override func awake(withContext context: Any?) { super.awake(withContext: context) } override func willActivate() { super.willActivate() } override func didDeactivate() { super.didDeactivate() } // Событие нажития кнопка "Click!" @IBAction func btnClick() { self.lbText.setText("Hallo!") } }
Вот результат:
Лейбл с надписью Label, и кнопка "Click!"
После нажатие на кнопку "Click!", лейбл меняет надпись с Label на Hallo!
Теперь можно пилить App для умных часов.
Сообщение отредактировал lexx821: 31.03.2019, 03:23:36
Отображение изображения в iPhone на Swift. Нужно добавить в assets (в ресурсы) картинки/фотки.
Добавление в assets (нужно выбрать assets.xcassets и перетянуть файлы/фотки в assets):
Код:
Import UIKit class ViewController: UIViewController { @IBOutlet weak var myImage: UIImageView! override func viewDidLoad() { super.viewDidLoad() // Загрузка картинки из Assets (из ресурсов) let image = UIImage(named: "Bildschirmfoto 2019-04-12 um 22.08.15.png") // Отображение картинки в UIImageView self.myImage.image = image } }
Результат:
Сообщение отредактировал lexx821: 13.04.2019, 02:34:15
Нашёл замечательный фреймворк, раньше он был платным, я ждал пока цену скинут, ну а сейчас он стал бесплатным. Можно программировать игры под iOS - https://github.com/phoboslab/impact Тут автор рассказывает про свой фреймворк https://vimeo.com/dsz под новый год займусь этим фреймворком.
пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0
Размещение рекламы на сайте Предложения о сотрудничестве Служба поддержки пользователей
© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.