iOS與H5交互之用H5制作TableView(Swiper)

在H5交互中,經(jīng)常會使用到TableView,但是TableView在H5中怎么實現(xiàn)呢内贮?

這里有兩種做法产园,使用jQuery和Swiper,本文寫的是Swiper做法夜郁,想了解jQuery做法什燕,請點擊這里

廢話不多說拂酣,說明怎么做之前先看下方效果圖:


2018-04-09 10_01_36.gif
交互方式

本文所使用的H5的交互方式是使用第三方庫WebViewJavascriptBridge秋冰,具體的使用方式可以參考小編之前寫的iOS與H5交互之WebViewJavascriptBridge

如何制作H5頁面的TableView

HTML頁面中需要完成的工作

1.加入WebViewJavascriptBridge必須加入的一段代碼
function setupWebViewJavascriptBridge(callback) {
                if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }
                if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }
                window.WVJBCallbacks = [callback];
                var WVJBIframe = document.createElement('iframe');
                WVJBIframe.style.display = 'none';
                WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
                document.documentElement.appendChild(WVJBIframe);
                setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
            }
2.引入H5的Swiper庫(注:若不引人此庫婶熬,則無法完成頁面所顯示的效果)
        <link rel="stylesheet" href="swiper.min.css">
        <script src="swiper.min.js"></script>
3.設置點擊的按鈕和按鈕方法剑勾,和需要顯示列表的位置
<input type="button" id="buttonID" value="加載數(shù)據(jù)" onclick="GetData()" style="margin-top: 20px;" />

        <!-- Swiper -->
        <div class="swiper-container" style="float: left; margin-top: 30px;">
            <div class="swiper-wrapper">
            </div>
        </div>
4.設置swiper樣式

這里的slidesPerView指顯示出現(xiàn)的個數(shù),也可以設為高度height赵颅,按自己的需求來

var swiper = new Swiper('.swiper-container', {
                paginationClickable: true,
                slidesPerView: 3,
                direction: 'vertical'});

5.設置點擊按鈕后HTML頁面?zhèn)鹘oiOS端的方法
function GetData() {
                window.WebViewJavascriptBridge.callHandler('GetData')
            }
6.設置iOS端傳回給HTML頁面的方法

(1)返回的數(shù)據(jù)應當是JSON的字符串虽另,按照相應的格式獲取數(shù)據(jù)
(2)根據(jù)數(shù)據(jù)設置Cell的格式

setupWebViewJavascriptBridge(function(bridge) {
                bridge.registerHandler('GetDataList', function(data, responseCallback) {
                    var jsonObj = JSON.parse(data);
                    for(var i = 0; i < jsonObj.length; i++) {
                        swiper.appendSlide('<div class="swiper-slide" onclick="TouchCell(\'' + jsonObj[i].name + '\')" style="border-top:1px solid #dddddd;">' +
                            '<span class="inline" style="text-align: left">' +
                            '<div style="font-size:2.66667rem;color:#221f1f;" class="name">' + jsonObj[i].name + '</div>' +
                            '</span>' +
                            '</div>'
                        )
                    }
                })
            })
7.設置Cell的點擊方法
function TouchCell(name) {
            alert('點擊了'+name)
        }

OC控制器中需要完成的工作

1.加載HTML頁面并設置WebViewJavascriptBridge
#import "WebViewJavascriptBridge.h"
...
@property (nonatomic, strong) WebViewJavascriptBridge *bridge;
...
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"H5TableViewDemo" ofType:@"html"]]]];

self.bridge = [WebViewJavascriptBridge bridgeForWebView:self.webView];
    
    [self.bridge registerHandler:@"GetData" handler:^(id data, WVJBResponseCallback responseCallback) {
    }];
2.將要傳給HTML的數(shù)據(jù)轉(zhuǎn)成JSON字符串
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:arr options:NSJSONWritingPrettyPrinted error:nil];
NSString *str = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];
3.將數(shù)據(jù)發(fā)送給HTML
[self.bridge callHandler:@"GetDataList" data:str];

當上述所有步驟都完成之后,大功告成饺谬。即可出現(xiàn)上面顯示的效果捂刺。

希望這篇文章對各位看官有所幫助,Demo下載地址:Demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末募寨,一起剝皮案震驚了整個濱河市族展,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拔鹰,老刑警劉巖仪缸,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異列肢,居然都是意外死亡恰画,警方通過查閱死者的電腦和手機宾茂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拴还,“玉大人跨晴,你說我怎么就攤上這事∑郑” “怎么了端盆?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長爱谁。 經(jīng)常有香客問我孝偎,道長,這世上最難降的妖魔是什么衣盾? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮势决,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘陈莽。我一直安慰自己,他們只是感情好走搁,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布私植。 她就那樣靜靜地躺著,像睡著了一般曲稼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贫悄,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天娘摔,我揣著相機與錄音,去河邊找鬼嫡丙。 笑死,一個胖子當著我的面吹牛曙博,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播父泳,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吴汪,長吁一口氣:“原來是場噩夢啊……” “哼惠窄!你這毒婦竟也來了漾橙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤脾歇,失蹤者是張志新(化名)和其女友劉穎淘捡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體焦除,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年乌逐,在試婚紗的時候發(fā)現(xiàn)自己被綠了瓣距。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡成黄,死狀恐怖逻杖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情荸百,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布蓝翰,位于F島的核電站光绕,受9級特大地震影響畜份,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜爆雹,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一钙态、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧册倒,春花似錦、人聲如沸剩失。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鞭执,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間兄纺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工估脆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留座云,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓圃阳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捍岳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容