我想用a UITabBar来让用户导航一个UIWebView.这是可能的还是我会更好地使用UIToolbar?如果最好使用a UIToolbar,我将如何模拟按钮的"选定"视觉状态,UITabBar本机的方式呢?
Dep*_*o B 25
我提供了Objective-C以及Swift版本来解决这个问题.您真正需要做的唯一事情是在类上实现UITabBarDelegate协议.它不一定是ViewController,但在这个简单的例子中它是).
在这个Objective-C示例中,您可以在UITabBar中切换三个搜索引擎.
首先,您需要设置视图,如下所示:(除非先将UITabBarDelegate添加到ViewController,否则无法设置代理插座,请参阅代码)

现在因为您没有直接引用UITabBar中的项目,因为我们在Interface Builder中设置了所有项目,您需要在它们上设置标记.我不是这种方法的忠实粉丝但如果你注意它就可以了.如果你想用动态加载按钮设置更复杂的东西,你应该考虑继承UITabBar.

现在重要的是右侧的"标签"设置.您需要为每个按钮设置一个数字.在这种情况下,我将它们设置为0,1和2,因为它或多或少与数组的计数方式相关,但您可以自由选择任何数字.
设置完成后我们可以看一下代码:
.h文件:
#import <UIKit/UIKit.h>
@interface LVDViewController : UIViewController<UITabBarDelegate>
// implementing the delegate allows you to drag and drop the delegate reference from the first screenshot
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@property (weak, nonatomic) IBOutlet UITabBar *tabBar;
@end
Run Code Online (Sandbox Code Playgroud)
.m文件:
#import "LVDViewController.h"
@interface LVDViewController ()
@end
@implementation LVDViewController
- (void)viewDidLoad;
{
[super viewDidLoad];
// Set the first item as selected. It will automatically load Google
[self tabBar:self.tabBar didSelectItem:[self.tabBar.items firstObject]];
self.tabBar.selectedItem = [self.tabBar.items firstObject];
// This is optional
}
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
{
NSString *searchEngineURLString = nil;
switch (item.tag)
{
case 0:
searchEngineURLString = @"https://google.com";
break;
case 1:
searchEngineURLString = @"https://duckduckgo.com";
break;
case 2:
searchEngineURLString = @"https://bing.com";
break;
}
[self loadSearchEngine:searchEngineURLString];
}
- (void)loadSearchEngine:(NSString *)searchEngineURLString;
{
NSURL *searchEngineURL = [NSURL URLWithString:searchEngineURLString];
NSURLRequest *searchEngineRequest = [NSURLRequest requestWithURL:searchEngineURL];
[self.webView loadRequest:searchEngineRequest];
}
@end
Run Code Online (Sandbox Code Playgroud)
现在我们有了Objective-C版本的Swift版本.首先我们再次在Interface Builder中设置View,这次Bing是最受欢迎的搜索引擎,而不是谷歌,以反映新的Apple观点.它几乎完全相同,您还必须再次将标签添加到标签栏项目.

我们再次使用View Controller,但现在我们使用的是Swift,所以它只有一个文件:
import UIKit
class ViewController: UIViewController, UITabBarDelegate {
@IBOutlet var tabBar : UITabBar
@IBOutlet var webView : UIWebView
override func viewDidLoad() {
super.viewDidLoad()
loadSearchEngine("https://www.bing.com")
tabBar.selectedItem = tabBar.items[0] as UITabBarItem;
}
func tabBar(tabBar: UITabBar!, didSelectItem item: UITabBarItem!) {
var searchEngineURLString: NSString! = "";
switch item.tag {
case 0:
searchEngineURLString = "https://www.bing.com"
break
case 1:
searchEngineURLString = "https://www.duckduckgo.com"
break
case 2:
searchEngineURLString = "https://www.google.com"
break
default:
searchEngineURLString = "https://www.bing.com"
break
}
loadSearchEngine(searchEngineURLString);
}
func loadSearchEngine(searchEngineURLString: NSString!) {
var searchEngineURL = NSURL(string: searchEngineURLString)
var searchEngineURLRequest = NSURLRequest(URL: searchEngineURL)
webView.loadRequest(searchEngineURLRequest)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14160 次 |
| 最近记录: |