読者です 読者をやめる 読者になる 読者になる

せでぃのブログ

ブログ初心者おいどんのどうでもいい愚痴やどうでもいい愚痴やどうでもいいマメ知識などを披露するチラシの裏です。

FESSとJSONその2〜後編〜

iphoneアプリ開発 fess9.2.0 JSON Objective-C SimVersion8.1 xcode6.1.1

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という項目を選ぶ。
f:id:Sediment:20150307033820p:plain
 それぞれの.mファイルにメソッドができるものの、中身が空でも動く。

// テキストフィールドのReturn押下でキーボードを閉じる
- (IBAction)didEnd:(id)sender {
    //[self.view endEditing:YES];
}

 17.2.キーボード外のタップ
 半分解決。要検証。
 理屈によると、Tap Gesture RecognizerというオブジェクトをViewControllerにドロップすると、アイコンが増える。
f:id:Sediment:20150307034436p:plain
もう1ステップ。Tap Gesture RecognizerのConnections inspectorのReferencinc Outlet CollectionsからviewへドロップしてGestureRecognizerを選ぶ。
f:id:Sediment:20150308222634p:plain
更にもう1ステップ。そのアイコンから、それぞれのViewControllerの.hファイルへドロップしてActionを選択してメソッドを書く。
f:id:Sediment:20150307121555p:plain
 それぞれの.mファイルへ追加するメソッド

// キーボード外のシングルタップで閉じる
- (IBAction)singleTapped:(id)sender {
    [self.view endEditing:YES];
}

 らしいんだが、TableView(RootView)側だけうんともすんとも言わない。NSLogも吐かないのでシングルタップのメソッド自体が呼ばれてない。
TableViewControllerのTapRecognizerのコネクション
f:id:Sediment:20150307122341p:plain
ViewControllerのTapRecognizerのコネクション
f:id:Sediment:20150307122411p:plain
 うーむ、わからん。ナビコンのせいっぽい気がする。

 これにて完了。
 あとは、これをベースにその3の機能を追加するだけ。その辺はまた次回。