iphone - UITabBar - 使用 Storyboard 的两个 View (nib) 相同的类

标签 iphone objective-c ios

我使用的是 iOS 5 和 Storyboard。我的 UITabBar 是使用 Interface Builder 创建的。我的 TabBar 中有两个相似的项目,它们是同一个列表,只是其中包含不同类型的项目。我所做的,但对我来说看起来很奇怪,是为每个 UITableViewviewDidLoad 设置不同的“标签”,然后根据标记。

- (void)viewDidLoad
{
    [super viewDidLoad];

    if (self.tableView.tag == 1)
    {
        type = @"lent";
    }
    else if (self.tableView.tag == 2)
    {
        type = @"borrowed";
    }
}

有什么更好的方法吗?我没有在代码中创建我的 UITabBar,所以我的 AppDelegate 非常空!我设置的类型只是我的一个核心数据实体中的一个属性,在一个列表上我有借来的项目,在另一个我有借出的项目,但它们是同一个实体。

最佳答案

您可以将类型公开为公共(public) View Controller 上的属性,并在选择相关选项卡栏项时设置它(tabBarController:didSelectViewController: 来自 UITabBarControllerDelegate 协议(protocol)——你的应用委托(delegate)将是标签栏 Controller 委托(delegate))。

您可以按如下方式进行设置。声明您的应用程序委托(delegate)符合 UITabBarControllerDelegate 协议(protocol),然后将其设置为选项卡栏 Controller 的委托(delegate)(您必须在代码中执行此操作,因为应用程序委托(delegate)无法在 Storyboard中连接)。在您的 applicationDidFinishLaunching 中,在返回 YES 之前添加以下内容:

UITabBarController *tbc = (UITabBarController*)self.window.rootViewController;
tbc.delegate = self;

然后实现下面的委托(delegate)方法:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{

    switch (tabBarController.tabBar.selectedItem.tag)
    {
        case 1:
            viewController.property = @"propertyA";
            break;
        case 2:
            viewController.property = @"propertyB";
            break;
    }

    NSLog(@"view controller is %@",viewController);

}

您需要将 viewController 变量转换为您的实际 View Controller 类,并将相关标签分配给每个 View Controller 的选项卡栏项目。

关于iphone - UITabBar - 使用 Storyboard 的两个 View (nib) 相同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932391/

相关文章:

iphone - NSFetchedResultsController 委托(delegate)方法在 mergeChangesFromContextDidSaveNotification 后未触发

ios - 访问 coredata `faults` 使 viewController 中的所有 coredata 属性都为 NIL

objective-c - NSFileHandle 和将异步写入 iOS 中的文件

objective-c - block 内的时间分析代码

c# - 用于 Unity 的 Objective C iOS 插件

ios - 如何将 PUT 请求添加到 RestKit + Core Data?

iphone - 如何制作一个显示下拉菜单的按钮?

iphone - iOS 上的假长曝光

ios - 基于横向应用程序的 iPhone 启动图像

ios - 具有最小日期的 Swift Datepicker