Quellcode durchsuchen

updated ios sample to use component and clojure-objc RC1

Harlan Iverson vor 9 Jahren
Ursprung
Commit
adb9faf241
3 geänderte Dateien mit 34 neuen und 19 gelöschten Zeilen
  1. 4 3
      ios-client/project.clj
  2. 27 15
      ios-client/src/sample/core.clj
  3. 3 1
      project.clj

+ 4 - 3
ios-client/project.clj

@@ -1,9 +1,10 @@
 (defproject com.github.harlanji/pubsub-demo-web "0.0.1-SNAPSHOT"
   :description ""
-  :plugins [[lein-objcbuild "_"]]
+  :plugins [[lein-modules "0.3.11"]
+            [lein-objcbuild "0.1.10"]]
   :objcbuild {:archs [:i386 :x86_64 #_:armv7 #_:armv7s]
               :frameworks [:UIKit :Foundation :CFNetwork]}
   :aot :all
   :dependencies [[uikit "0.1.5"]
-                 [galdolber/clojure-objc "1.7.0-beta2"]]
-  :source-paths ^:replace ["ios-client/src"])
+                 [galdolber/clojure-objc "_"]
+                 [com.stuartsierra/component "0.2.3"]])

+ 27 - 15
ios-client/src/sample/core.clj

@@ -1,5 +1,6 @@
 (ns sample.core
-    (:require [uikit.core :as uikit]))
+    (:require [uikit.core :as uikit]
+              [com.stuartsierra.component :as component]))
 
 (def white (-> ($ UIColor)
                ($ :whiteColor)))
@@ -20,21 +21,32 @@
 
 
 
+(defrecord MainUI []
+           component/Lifecycle
+           (start [component]
+                  (let [window (-> ($ UIWindow)
+                                   ($ :alloc)
+                                   ($ :initWithFrame (-> ($ UIScreen)
+                                                         ($ :mainScreen)
+                                                         ($ :bounds))))
+                        nav (-> ($ UINavigationController)
+                                ($ :new))]
+                       (doto window
+                             ($ :makeKeyAndVisible)
+                             ($ :setRootViewController nav)
+                             ($ :setBackgroundColor white))
+                       (reset! uikit/current-top-controller nav)
+                       ($ nav :setNavigationBarHidden true)
+                       (uikit/nav-push (uikit/controller "Screen title" my-screen))
+                       component))
+           (stop [component]
+                 ))
+
+
+(defonce system (atom {:ui (->MainUI)}))
+
 (defn main []
-      (let [window (-> ($ UIWindow)
-                       ($ :alloc)
-                       ($ :initWithFrame (-> ($ UIScreen)
-                                             ($ :mainScreen)
-                                             ($ :bounds))))
-            nav (-> ($ UINavigationController)
-                    ($ :new))]
-           (doto window
-                 ($ :makeKeyAndVisible)
-                 ($ :setRootViewController nav)
-                 ($ :setBackgroundColor white))
-           (reset! uikit/current-top-controller nav)
-           ($ nav :setNavigationBarHidden true)
-           (uikit/nav-push (uikit/controller "Screen title" my-screen))))
+      (swap! system update component/start))
 
 
 

+ 3 - 1
project.clj

@@ -7,12 +7,14 @@
 
   :modules {:dirs ["core"
                    "pubsub-service"
-                   "web-client"]
+                   "web-client"
+                   "ios-client"]
             :versions {com.github.harlanji.clojure-stack/core "0.0.1-SNAPSHOT"
                        com.github.harlanji.clojure-stack/pubsub-service "0.0.1-SNAPSHOT"
                        lein-objcbuild "0.1.10"
                        org.clojure/clojure "1.8.0"
                        org.clojure/clojurescript "1.7.228"
+                       galdolber/clojure-objc "1.7.0-RC1"
                        com.stuartsierra/component "0.3.1"
                        reagent "0.5.1"}
             }