- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想使用 UITabBar
让用户导航单个 UIWebView
。这是可能的还是我最好使用 UIToolbar
?如果最好使用 UIToolbar
,我将如何模拟按钮的“选定”视觉状态,就像 UITabBar
本身那样?
最佳答案
我已经提供了 Objective-C 和 Swift 版本来解决这个问题。您真正需要做的唯一一件事是在类上实现 UITabBarDelegate 协议(protocol)。它不一定是 ViewController,但在这个简单的例子中它是)。
在这个 Objective-C 示例中,您可以通过 UITabBar 在三个搜索引擎之间切换。
首先您必须设置您的 View ,如下所示:(除非先将 UITabBarDelegate 添加到 ViewController,否则无法设置委托(delegate)导出,请参见代码)
现在因为您没有直接引用 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
.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
现在我们有了 Objective-C 版本,是时候使用它的 Swift 版本了。首先,我们再次在 Interface Builder 中设置我们的 View ,这次 Bing 是最喜欢的搜索引擎而不是谷歌,以反射(reflect)新的 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)
}
}
关于ios - 使用不带 UITabBarController 的 UITabBar 来控制 UIWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24221935/
我正在开发一个广播流应用程序,应用程序底部有 2 个 UITabBarController 按钮。一种用于直播,一种用于前 40 名列表。 我为这两个选项卡使用了一个通用的 StreamingView
我有一个 UINavigationController在我的 UITabBarController 的根目录中.我还有一个 UITabBarController我现在在现有的 UITabBarCont
我最近升级到 xcode 4。我的应用程序使用 tabbarcontroller。在旧的 xcode 3.x 中,您可以根据此屏幕截图将选项卡更改为不同类型: 根据我在研究此问题时收集到的信息,xco
我使用包含 3 个项目的 Storyboard创建了一个 UITabBarController,前两个是 View Controller 。我需要第三项指向另一个 UITabBarController
好的,这就是场景: 我有一个选项卡栏应用程序,每个选项卡中都有一个 UINavigationController。假设我有两个选项卡:“主页”和“退出”。在“主页”中,用户遵循基于 UINavigat
我有自己的 UITabBarViewController 子类。是否可以更改所有嵌入式 View Controller View 的框架,以便自己的 UITabBarViewController Vi
滚动时选择顶部的菜单项。我希望用户突出显示一个项目,然后单击它以选择它。 -> 当用户移动到其他菜单项时,选定的蓝色会随之移动(跟随光标)。如果用户单击该项目,则选定的蓝色将被新项目替换,如果不是在用
我正在尝试以编程方式更改我的应用程序中标签栏项目的名称。 在我的 Storyboard 我有一个 UITabBarController 设置为初始 View ,层次结构如下: UITabBarCont
我正在使用包含 3 个项目的 UITabBarController,并且很好奇如果我位于第二个或第三个选项卡上,如何从第一个选项卡访问方法。我遇到的问题是我在第一个选项卡上有一个 UIImageVie
我希望在 iOS 中实现一个自定义选项卡栏,其中所选项目的尺寸大于其余选项卡的大小,并查看类似于此屏幕截图的内容。 有人可以指出如何最好在 Swift 中完成此任务的教程吗? 最佳答案 我多次面临这个
我正在制作一个自定义的东西,它的工作方式应该与 UITabBarController 类似——一个管理子 ViewController 的 UIViewController。父 UIViewContr
我有一个 viewController,它正在作为 UITabBarController 上的选项卡加载。 我如何知道在 viewController 类中,有多少区域可用于显示此 viewContr
我想在UITabbarController中输入一个按钮来处理事件作为instagram应用程序的标签栏。 此链接中的图片: http://itunes.apple.com/us/app/instag
我有一个 UIViewController,其中包含一个带有三个选项卡的 UITabBarController(每个选项卡都是一个 UINavigationController)。 我遇到的问题是,在
我在使用 UITabBarController 时遇到了真正的问题。我追求的结果如下:1)在纵向模式下,一个简单的基于选项卡栏的应用程序(带有导航栏)没什么特别的。2)在横向模式下,我想使用自己的 U
UITabBarController 不允许横向。所以我使用了 UITabBarContoller 的子类(称为 RotatingTabBarController)。其唯一目的是通过向 shouldA
是否可以用动画隐藏它? 最佳答案 UITabBar 继承自 UIView,因此您可以像使用标准 UIView 一样隐藏它并为其设置动画。 - (void) hideTheTabBarWithAnima
UITabBarController是否可以在代码中选择选项卡?就像UINavigationController一样我们可以使用popViewController弹回rootViewControlle
我需要更改 UITabBarController 的“更多”按钮显示的列表的字体大小和背景颜色。是否可以 ?我该怎么做 ?非常感谢。 最佳答案 UITabBarController 有一个名为 mor
我正在尝试将股票UITabBar的高度更改为44px,类似于Tweetbot的标签栏高度。我也看到其他一些应用程序也可以这样做。 但是,当我尝试设置高度时,它仍然保持不变 self.tabBar.fr
我是一名优秀的程序员,十分优秀!