ListViewサポート

注意:iOS9対応されていません。iOS9にアップデートするとListViewはクラッシュします。
対応には、しばらくお待ちください。 2015/09/17 大石

 

 サンプルリストをこちらから登録できます

◆ListViewとは?

Excelや、Accessで作成した XMLファイル を iPhone で参照するためのアプリです。

会社や個人には「一覧表形式」(リスト形式)の情報がたくさんあると思います。これらの情報をスマートフォンで簡単に参照したり、共有できたら便利かもしれません。

手持ちの Excel や Access の一覧表を、XMLファイルに変換してやり、Webサイトにアップロードします。

アップロードしたXMLファイルを、ListViewで読み込むと、スマートフォン用のWebデザインで参照出来きるようになります。

一覧表には、「電話番号」「住所」「URL」などの情報が含まれている場合が多いと思います。

これらは、iPhoneのWebブラウザーと同様に、「リンク」が張られて「電話の発信」、「地図の表示」、「Webサイトの表示」が行える様になっています。

一覧表の内容は日々変わると思いますが、XMLファイルに変換してWebサイトにアップロードしておくだけで、ListViewは自動的に同期してくるので、いつでも最新の情報を見ることができます。

◆Webサイトについて

会社や個人の情報を、だれでも参照できるWebサイトに置くのは、好ましくありません。

ListViewは「Basic認証」のWebサイトへのアクセスをサポートしているので、大切な情報は、パスワードで保護されたWebサイトに置くことができます。

◆XMLファイルの作成について

多くの方はExcelは「持っている」が、Accessは「持っていない」と思います。

少数派のAccessで一覧表を管理されている方は、対象のテーブルを「XMLファイル」で「エクスポート」するだけで簡単にXMLファイルを作成できてしまいます。

Excelの場合ですが、残念ながら直接「XMLファイル」を作成するのは、非常に大変です。

そこで、Excel用の変換ツール(csv2xml.vbs)を用意しましたので、そのツールを使って、XMLファイルを作成してもらうことになります。

Excel用の変換ツール(csv2xml.vbs)ダウンロード

◆Excel用のXMLファイル変換ツールについて

まず、下記の様に、1行目に項目名、2行目以降に値となるように一覧表を作成します。

そして、このシートをCSVファイルとして保存します。

そしてExcel用の変換ツール(csv2xml.vbs)を実行させると、CSVファイルを以下の様なXMLファイルに変換してくれます。

◆一覧表の作成ルール

・1行目に項目名、2行目以降にデータを入力する形で一覧表を作成します。
・先頭列から6列目までを、表示スタイルに応じてデータ一覧画面に表示させることができます。

表示1 : 1列目を表示
表示2 : 1、2列目を表示
表示3 : 1~6列目を表示

・列数、行数にはアプリで制限を設けていません。
但し、あまりにも沢山の列、行は応答時間が遅くなる場合があります。

・データには文字、数値、HTMLタグが入力できます。

◆WebサイトへのXMLファイルのアップロード

Webサイトにデータをアップロードするには、フリーソフトの「FFFTP」や、レンタルサーバーではWebベースのFTPツールが用意されているので、それらのツールをご利用ください。

使用方法

◆参照

画面下の「リスト一覧」「カテゴリー」「お気に入り」タブから、リストを参照することが出来ます。

セルをタップすることで、「リスト一覧」>「データ一覧」>「データ」と画面が切り替わります。

◆検索

「データ一覧」でセルを下にスライドさせると、検索用のバーが現れ、リスト内の検索を行うことが出来ます。

検索は、選択しているリストのすべてのデータを対象に行われ、指定した文字を含むデータのみが表示されます。

◆表示スタイルの変更

「リスト一覧」「データ一覧」「データ」の各画面で、表示スタイルを変更することが出来ます。

変更する場合は画面右上の「表示x」ボタンをタップすると、タップする毎に表示1~3の順番でスタイルが切り替わります。

◆リストの登録

「リスト一覧」の左上「設定」ボタンをタップすると「編集モード」に切り替わります。

この状態で、既存リストの削除および、既存リストの設定の変更が行えます。

新規のリストを登録する際には、右上の「追加」ボタンをタップすると、新規リストの登録画面に切り替わります。

リストを登録する為には、XMLファイルを保存しているWebサイトの「URL」を入力します。

Basic認証のWebサイトの場合は、ユーザID,パスワードも入力します。

URLを指定後、右上の「保存」ボタンをタップし、設定を保存させます。

保存できると、ボタンは「同期」にかわるので、もう一度ボタンをタップします。

同期ボタンをタップすると、指定されたWebサイトからXMLファイルを読み込まれます。

問題なく読み込みが完了した場合は、読み込まれた件数と同期日時が表示されます。

何らかの理由で、読み込みが失敗する場合があります。

主なエラー内容を下記に示します。

[エラー01] 指定のURLにアクセスできません
    3G,WiFiがオフになっていたり、URLの中のサーバー部分の記載が誤っていることが考えられます。
[エラー02] XMLフォーマットではありません
    作成日のキーワード”generated=”を含んでいません。 XMLファイルの作成誤りや、
    URLの記入誤りが考えられます。
[エラー03] アクセスする権限がありません
    ユーザID,パスワードに誤りがあることが考えられます。
[エラー04] 対象ページがありません
    URLの入力誤りが考えられます。
[エラー05] XML処理エラー : (詳細エラーメッセージ)
    XMLファイルのタグの記述誤りや、文字コードの指定と実際の文字コードのアンマッチ、
    文字コードがShiftーJISの場合(文字コードはUTF-8をお勧めします)等が考えられます。

◆設定タグ

「今すぐ同期」ボタンをタップすると、登録されている全てのリストの同期処理を行います。

同期処理は、XMLファイル内の作成日を見て、読み込み済のXMLファイルよりも最新の場合のみ読み込み処理を行います。

自動での読み込みを行う必要がない場合は、リストの設定画面から「自動同期」の項目をオフにしてください。

同期処理は、設定タグで手動で行う方法と、自動で行う方法があります。

自動での同期は、ListViewのアプリを開いている状態で、ホームボタンを押すとバッググラウンドで実行されます。

同期処理が失敗した場合、特にエラーメッセージは表示されません。

「リスト一覧」のスタイル3の「通信エラー」の項目で、失敗時のエラーメッセージを確認する事が出来ます。

◆リストビューの今後 2012/12/17 追記

2012/12時点で、updateの件数をみる限り40名位の方にインストールされているようですが、
自分でデータを作成されて使用されている方は、ほとんどいないかも...

今後の改良ポイントを考えてみました。少しづつ手を付けていきたいと思っています

・iPad対応
>ついにiPad miniを入手したので何とかiPad対応したい
・XMLS以外にCSVファイルを読み込みできるようにしたい
>やっぱりCSVファイルで作成する方が簡単ですね
・実用的なコンテンツを増したい
>一般的で便利な情報を探してみたいと思います
・iCloud対応して、設定ファイルを共有したい
>iPhone、iPadで共有したら、いちいち設定しないで済むので便利かも
・UIを、流行の「ページめくり方式」にしたい
>タブよりだんぜん使いやすくなるかも...

ご意見等ありましたら、この記事にコメントいただけるとありがたいです(=^x^=)

Comments

Comment from ohishi
Time 2014年10月18日 at 16:37

今週から、IOS8にアップグレードするとリストビューがクラッシュすることに対応を始めました。
約2年ぶりにデバックするため、環境を整えてPCでコンパイルしたところ、警告51件...(涙
何とか文法エラーを修正して、本日iPhone5の実機で実行してみました。で、クラッシュする箇所が見つかりました(^^)/
時間見つけて、こつこつと修正していきたいと思います。

Comment from ohishi
Time 2014年10月27日 at 10:03

iOS7では問題なく動作するのだが、iOS8で「EXC_BAD_ACCESS」が発生して苦戦中です。

EXC_BAD_ACCESSとは存在しないアドレスを参照するエラーで、削除されたインスタンスを参照したりすると発生するエラーなのだが、iOS7で動作し、iOS8でどうして発生するのか原因がわかんない状態 トホホです。

リストビューは2011年のiOS4で作成し、iOS5での画面拡張の対応のみ行って、iOS7では何もしないで動作していた。ところがiOS8でいきなりクラッシュする事態に...

小さなサンプルプログラムで、この現象が再現できれば解決方法を見つけられるはずなのだが、糸口が見つかんない状態。

Comment from ohishi
Time 2014年10月27日 at 17:40

ようやく、クラッシュしている本当の場所を特定できました。
メモリ上の配列がiOS8の場合だけ廃棄されている
メモリ管理のロジックがiOS8で変わったってことかな…
廃棄されないように小細工してみようかな

独り言でした...

Comment from ohishi
Time 2014年10月29日 at 16:29

またまた、独り言です。
IOS7とIOS8の動作の違いが分かりかけてきた。
「autorelese」 の動作が異なるようだ。
「pool release」を暫定的にコメントアウトしてIOS8で試すとクラッシュせず動作するようになった。もう一歩かな...

Comment from ohishi
Time 2014年11月3日 at 22:19

何とかIOS8対応、完了しました。
クラッシュの原因は下記の2項目

<IOS8でのクラッシュの原因>
・メモリのリリースタイミングが変わったと思われる
 >retainしてリリースタイミングを遅らせた
・オブジェクト間の変数の渡しの遅れ
 >他のオブジェクトに値を書き込んだ後、0.1秒程度処理を停止させた
※マルチスレッド(多重実行)の処理ロジックが変わり、その影響をもろに受けてしまった感じってとこです。

後は、新バージョンをアップロードするだけなんだが...
新バージョン1.4の記入は終わったが、モジュールのアップロードでエラー発生。
どうも、プロビジョニング関連が古いらしいく、登録を再度行う必要があるらしい とほほ(*_*;

ファイト!! >オレ

Comment from ohishi
Time 2015年9月17日 at 14:57

iOS9! 残念ながら、今回もクラッシュしてしまいました。
iOS8の時は、ひどい目にあいましたが、今回はどうでしょう?
テスト環境を整理してコンパイルしてみたいと思います。
たぶん、2週間くらい対応にかかるかもしれません。 トホホです。

Write a comment