2 * Copyright (C) 2016 Apple Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23 * THE POSSIBILITY OF SUCH DAMAGE.
27 #import "TabViewController.h"
29 #import "WebViewController.h"
30 #import <WebKit/WKWebView.h>
32 void *ContentSizeContext = &ContentSizeContext;
34 @implementation TabViewController
38 [self.tableView removeObserver:self forKeyPath:@"contentSize" context:ContentSizeContext];
44 [self.tableView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:ContentSizeContext];
47 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
49 if (context == ContentSizeContext)
50 self.preferredContentSize = CGSizeMake(self.preferredContentSize.width, self.tableView.contentSize.height);
53 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
55 static NSString *MyIdentifier = @"MyReuseIdentifier";
56 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
58 cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];
60 if (indexPath.section == 1) {
61 cell.textLabel.text = @"New...";
65 WKWebView *webView = [self.parent.webViews objectAtIndex:indexPath.row];
66 cell.textLabel.text = webView.title;
70 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
74 return self.parent.webViews.count;
77 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
82 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
84 return indexPath.section != 1;
87 - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
92 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
94 if (indexPath.section == 2)
97 [self.parent removeWebViewAtIndex:indexPath.row];
98 [tableView reloadData];
101 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
103 if (indexPath.section == 1)
104 [self.parent addWebView];
106 [self.parent selectWebViewAtIndex:indexPath.row];
107 [self.parent dismissViewControllerAnimated:YES completion:nil];