FESSとJSONその2〜後編〜
FESSとJSONその2(書きかけ) - せでぃのブログ
さて、続きです。あとはコードだけなので、順不同でも大丈夫。
作成手順
11.AppDelegate.hを編集
fess-json/AppDelegate.h at master · csny/fess-json · GitHub
共有する変数*servernameをインスタンス変数として定義。その辺を追加。
@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
NSString *servername;
}
@property (nonatomic, retain) NSString *servername;
12.AppDelegate.mを編集
fess-json/AppDelegate.m at master · csny/fess-json · GitHub
変数servernameのため、@synthesizeとdidFinishLaunchingWithOptions:メソッドに追記。
#import "AppDelegate.h" @interface AppDelegate () @end @implementation AppDelegate @synthesize servername; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. // servername初期化 servername = @""; return YES; }
13.TableViewController.hを編集
fess-json/TableViewController.h at master · csny/fess-json · GitHub
"AppDelegate.h"のインポート、*appDelegateのインスタンス変数を定義。
#import <UIKit/UIKit.h> #import "AppDelegate.h" @interface TableViewController : UITableViewController { AppDelegate *appDelegate; } @property (strong, nonatomic) IBOutlet UITableView *tableView; @property (weak, nonatomic) IBOutlet UITextField *searchField; @end
14.ViewController.hを編集
fess-json/ViewController.h at master · csny/fess-json · GitHub
13.に同じ。
#import <UIKit/UIKit.h> #import "AppDelegate.h" @interface ViewController : UIViewController { AppDelegate *appDelegate; } @property (weak, nonatomic) IBOutlet UITextField *addressField; - (IBAction)saveBtn:(id)sender; @end
15.TableViewController.mを編集
fess-json/TableViewController.m at master · csny/fess-json · GitHub
以下の3つのメソッドを追加。
(void)viewDidAppear:(BOOL)animated
(void)refleshControlSetting
(void)onRefresh:(UIRefreshControl *)refreshControl
viewDidLoadで、refleshControlSettingを呼び出す。
(void)viewDidLoad { [super viewDidLoad]; [self refleshControlSetting]; }
16.ViewController.mを編集
fess-json/ViewController.m at master · csny/fess-json · GitHub
viewDidLoad修正。既にあるボタンアクションに追加。
(IBAction)saveBtn:(id)sender
17.ソフトウェアキーボードを閉じる動作の追加
ViewController毎に作業が必要なので、RootViewController、ViewControllerのどちらでもやらなければならない。
17.1.キーボードのリターンキー
再度、テキストフィールドをTableViewController.hとViewController.hへドロップし、今度はActionのdid End on Exitという項目を選ぶ。
それぞれの.mファイルにメソッドができるものの、中身が空でも動く。
// テキストフィールドのReturn押下でキーボードを閉じる - (IBAction)didEnd:(id)sender { //[self.view endEditing:YES]; }
17.2.キーボード外のタップ
半分解決。要検証。
理屈によると、Tap Gesture RecognizerというオブジェクトをViewControllerにドロップすると、アイコンが増える。
もう1ステップ。Tap Gesture RecognizerのConnections inspectorのReferencinc Outlet CollectionsからviewへドロップしてGestureRecognizerを選ぶ。
更にもう1ステップ。そのアイコンから、それぞれのViewControllerの.hファイルへドロップしてActionを選択してメソッドを書く。
それぞれの.mファイルへ追加するメソッド
// キーボード外のシングルタップで閉じる - (IBAction)singleTapped:(id)sender { [self.view endEditing:YES]; }
らしいんだが、TableView(RootView)側だけうんともすんとも言わない。NSLogも吐かないのでシングルタップのメソッド自体が呼ばれてない。
TableViewControllerのTapRecognizerのコネクション
ViewControllerのTapRecognizerのコネクション
うーむ、わからん。ナビコンのせいっぽい気がする。
これにて完了。
あとは、これをベースにその3の機能を追加するだけ。その辺はまた次回。