Форум программистов, компьютерный форум CyberForum.ru

Swift

Войти
Регистрация
Восстановить пароль
 
Kraynov
0 / 0 / 0
Регистрация: 05.10.2014
Сообщений: 3
#1

Передать из UITableView в UIWebView - Swift

11.07.2015, 15:38. Просмотров 832. Ответов 3
Метки нет (Все метки)

Всем привет! Являюсь новичком Swift. Помогите, пожалуйста, передать данные из UITableView в UIWebView таким образом:

lesson 1 -> откроет lesson1.html
lesson 2 -> откроет lesson2.html

"массив": arrayOfFiles = ["lesson1.html","lesson2.html"]

Никак не могу понять, не ругайтесь, прошу, помогите...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2015, 15:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передать из UITableView в UIWebView (Swift):

UIWebView - Программирование iOS
Всем доброго дня. Есть WebView в контроллере. С ним связано 2 проблемы: 1. Сейчас стоит код: NSURL* url = ; NSURLRequest*...

UIWebView + UIImageView - Программирование iOS
Здравствуйте. Нужно расположить webView под imageView так, чтобы при скролле webView imageView так же скроллилась. Попробовал добавить оба...

Не могу разобраться с UIWebView - Программирование iOS
Всем привет. Сабж. Суть: кую большой проджект, все сроки про***л еще вчера. А ступор встал из-за всего одной мелочи - до кучи, имиджа...

Отображение сайта на UIWebView - Программирование iOS
Пытаюсь отображать сайты на данном контроле: - (void)viewDidLoad { ; // Do any additional setup after loading the view,...

Несуществующий UITableView - Программирование iOS
Добрый вечер. Столкнулся с такой проблемой: создал простое приложение с UITableView. делал по уроку, все как положено. В момент запуска...

Сортировка в UITableView - Программирование iOS
Добрый день. Во время разработки столкнулся с необходимостью сортировки, а так же связанным с ней багом. Обо всем по порядку. 1....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Митя800
53 / 53 / 13
Регистрация: 13.07.2015
Сообщений: 176
13.07.2015, 14:11 #2
Все очень просто!

Создайте в проекте два контроллера:
1. TableViewController
2. ViewController с элементом UIWebView, в исходник добавьте IBOutlet на WebView

В сториборде сделайте связь от TableViewController ячейки UITableViewCell к ViewController, укажите тип show

Добавьте в ваш проект html-страницы (lesson1.html, lesson2... и т.д.) Смотрите чтобы html-файлы были бандле.

Теперь пишите в исходном коде контроллеров код:

В ViewController
Objective-C
1
2
3
4
5
6
7
8
9
10
11
var lessonName = "" // Добавим новое свойство в класс контроллера, текущее название html-файла без расширения .html
 
override func viewDidLoad() {
  super.viewDidLoad()
 
  let htmlPath = NSBundle.mainBundle().pathForResources(self.lessonName, ofType: "html") // путь к файлу хтмл
 
  var htmlString = NSString(contentsOfFile: htmlPath!, encoding: NSUTF8StringEncoding, error:nil) // переводим в строку
 
  self.webView.loadHTMLString(htmlString! as String, baseURL: nil) // вызываем свойство webview отлета, загружаем html строку
}
В TableViewController
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// добавим свойства в классе контроллера
 
var lessons = ["lesson1", "lesson2"] // Массив имен хтмл-файлов
var selectedLesson = -1 // индекс имени текущего хтмл-файла
 
// в методе -tableView:cellForAtIndexPath:
let cell = tableView.duqueueReusableCellWithIdentifier("CellIdentifier", forIndexpath: indexPath) as! UITableViewCell
 
cell.textLabel?.text = self.lessons[indexPath.row]
 
return cell
 
//в методе tableView:willSelectRowAtIndexPath
self.selectedLesson = indexPath.row
 
return indexPath
 
// в методе - prepareForSegue:sender:
var vc = segue.destinationViewController as? ViewController
 
if selectedLesson > 0 {
  vc?.lessonName = self.lessons[self.selectedLessons]
}

Примерно так! Код написал в сокращенном виде, но суть должны понять.
Советую еще прочитать Start Developing iOS Apps Today от Apple там все базовые вещи объясняются.
Успехов в начинании!
Kraynov
0 / 0 / 0
Регистрация: 05.10.2014
Сообщений: 3
17.07.2015, 23:00  [ТС] #3
Митя800, спасибо! А Вы не могли бы мне проект .xcodeproj скинуть? Было бы здорово!
Митя800
53 / 53 / 13
Регистрация: 13.07.2015
Сообщений: 176
19.07.2015, 16:21 #4
Вот исходники:

TableViewController.swift
Кликните здесь для просмотра всего текста
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import UIKit
 
class TableViewController: UITableViewController {
    
    var lessons = ["lesson1", "lesson2"]
    var selectedLesson = -1;
 
    override func viewDidLoad() {
        super.viewDidLoad()
 
        // Uncomment the following line to preserve selection between presentations
        // self.clearsSelectionOnViewWillAppear = false
 
        // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
        // self.navigationItem.rightBarButtonItem = self.editButtonItem()
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
 
    // MARK: - Table view data source
 
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
 
        return self.lessons.count
    }
 
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("CellIdentifier", forIndexPath: indexPath) as! UITableViewCell
 
        // Configure the cell...
        
        cell.textLabel?.text = self.lessons[indexPath.row]
 
        return cell
    }
    
    override func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {
        
        self.selectedLesson = indexPath.row
        
        return indexPath
    }
 
    // MARK: - Navigation
 
    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        // Get the new view controller using [segue destinationViewController].
        // Pass the selected object to the new view controller.
        
        var vc = segue.destinationViewController as? ViewController
        
        if selectedLesson > 0 {    
            vc?.lessonName = self.lessons[self.selectedLesson]
        }
    }
 
}

ViewController.swift
Кликните здесь для просмотра всего текста
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import UIKit
 
class ViewController: UIViewController {
    
    var lessonName = ""
 
    @IBOutlet weak var webView: UIWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        var thePath = NSBundle.mainBundle().pathForResource(self.lessonName, ofType: "html")
        
        var htmlString = NSString(contentsOfFile: thePath!, encoding: NSUTF8StringEncoding, error: nil)
        
        
        self.webView.loadHTMLString(htmlString! as String, baseURL: nil)
        
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
 
 
}

lesson1.html
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html>
    <head><title></title></head>
    <body>
        <i> test italic </i> <br />
        <b> text bold </b>
        <div> test test test
            </div>
    </body>
</html>

lesson2.html
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
<!DOCTYPE HTML>
<HEAD>
    <HEAD> </HEAD>
    <BODY>
        <h1> text h1 </h1>
        <h2> text h2 </h2>
        ...
    </BODY>
</HEAD>

Main.storyboard
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="N8Q-N4-jQb">
    <dependencies>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
        <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="ufC-wZ-h7g">
            <objects>
                <viewController id="vXZ-lx-hvc" customClass="ViewController" customModule="MyWebView" customModuleProvider="target" sceneMemberID="viewController">
                    <layoutGuides>
                        <viewControllerLayoutGuide type="top" id="jyV-Pf-zRb"/>
                        <viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                        <subviews>
                            <webView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Qcy-EV-lx1">
                                <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                            </webView>
                        </subviews>
                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
                        <constraints>
                            <constraint firstItem="Qcy-EV-lx1" firstAttribute="top" secondItem="kh9-bI-dsS" secondAttribute="topMargin" id="6Xm-yR-GOt"/>
                            <constraint firstItem="2fi-mo-0CV" firstAttribute="top" secondItem="Qcy-EV-lx1" secondAttribute="bottom" id="94F-5C-54v"/>
                            <constraint firstAttribute="trailingMargin" secondItem="Qcy-EV-lx1" secondAttribute="trailing" constant="-16" id="cVk-a3-YTV"/>
                            <constraint firstItem="Qcy-EV-lx1" firstAttribute="leading" secondItem="kh9-bI-dsS" secondAttribute="leadingMargin" constant="-16" id="rKp-uP-mig"/>
                        </constraints>
                    </view>
                    <connections>
                        <outlet property="webView" destination="Qcy-EV-lx1" id="fYO-3q-Dv1"/>
                    </connections>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="1111" y="663"/>
        </scene>
        <!--Lessons-->
        <scene sceneID="McB-2o-kyZ">
            <objects>
                <tableViewController id="m5n-vV-emi" customClass="TableViewController" customModule="MyWebView" customModuleProvider="target" sceneMemberID="viewController">
                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="NOo-JH-FyY">
                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                        <prototypes>
                            <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CellIdentifier" textLabel="BLl-1G-5YM" style="IBUITableViewCellStyleDefault" id="VqT-ox-0fi">
                                <autoresizingMask key="autoresizingMask"/>
                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="VqT-ox-0fi" id="wy8-x3-YQH">
                                    <autoresizingMask key="autoresizingMask"/>
                                    <subviews>
                                        <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="lesson #" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="BLl-1G-5YM">
                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                            <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                    </subviews>
                                </tableViewCellContentView>
                                <connections>
                                    <segue destination="vXZ-lx-hvc" kind="show" id="w7U-pc-4ob"/>
                                </connections>
                            </tableViewCell>
                        </prototypes>
                        <connections>
                            <outlet property="dataSource" destination="m5n-vV-emi" id="m3F-7G-nvy"/>
                            <outlet property="delegate" destination="m5n-vV-emi" id="Z3V-6J-e8O"/>
                        </connections>
                    </tableView>
                    <navigationItem key="navigationItem" title="Lessons" id="avn-cv-KSt"/>
                </tableViewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="uWv-g5-J9I" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="347" y="663"/>
        </scene>
        <!--Navigation Controller-->
        <scene sceneID="acA-9C-gwm">
            <objects>
                <navigationController automaticallyAdjustsScrollViewInsets="NO" id="N8Q-N4-jQb" sceneMemberID="viewController">
                    <toolbarItems/>
                    <navigationBar key="navigationBar" contentMode="scaleToFill" id="E3m-Dk-E4J">
                        <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
                        <autoresizingMask key="autoresizingMask"/>
                    </navigationBar>
                    <nil name="viewControllers"/>
                    <connections>
                        <segue destination="m5n-vV-emi" kind="relationship" relationship="rootViewController" id="gwp-Mo-AyG"/>
                    </connections>
                </navigationController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="h5k-tB-M8h" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="-465" y="663"/>
        </scene>
    </scenes>
</document>


P.S. Не ленитесь попробуйте хотя бы сами собрать проект, разберитесь как работает приложение.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2015, 16:21
Привет! Вот еще темы с ответами:

UITableView & UIButton - Программирование iOS
Доброго времени суток. Возник вопрос у меня есть таблица с 3-мя ячейками мне нужно при выборе ячейки менять Title кнопки на тот текст...

Индексация ячеек в UITableView - Программирование iOS
Здравствуйте, скажите пожалуйста как решить проблему: у меня в UITableView есть несколько секций, в каждой и которых различное количество...

Работа с жестами в UITableView - Программирование iOS
Разрабатываем приложение, столкнулись с проблемой жестов в uitableView. в кратце поясню, реализуем так называймый siebar который доступен...

UISearchBar & UITableView - Программирование iOS
Доброго времени суток вопрос. Переделываю приложение под iOS 7 добавил поиск по таблице но он открывает файлы по индексу ячейки, а не по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.07.2015, 16:21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru