all*_*ire 5 iphone objective-c ios
我正在使用iOS 5和Storyboard.我UITabBar是使用Interface Builder创建的.我的两个相似的项目TabBar是相同的列表,只是其中包含不同类型的项目.我所做的,但看起来很奇怪,是为每个UITableView和在中设置一个不同的"标签" viewDidLoad,然后根据标签分配正确的类型.
- (void)viewDidLoad
{
[super viewDidLoad];
if (self.tableView.tag == 1)
{
type = @"lent";
}
else if (self.tableView.tag == 2)
{
type = @"borrowed";
}
}
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?我没有创建我UITabBar的代码,所以我AppDelegate很空!我设置的类型只是我的一个核心数据实体中的一个属性,在列表中我有借用项目,另一个我有借用项目,但它们是同一个实体.
您可以将该类型公开为公共视图控制器上的属性,并在选择相关选项卡栏项目时设置它(tabBarController:didSelectViewController:
来自 UITabBarControllerDelegate 协议 - 您的应用程序委托将是选项卡栏控制器委托)。
您可以按如下方式进行设置。声明您的应用程序委托符合 UITabBarControllerDelegate 协议,然后将其设置为选项卡栏控制器的委托(您必须在代码中执行此操作,因为应用程序委托无法在故事板中连接)。在您的 applicationDidFinishLaunching 中,在返回 YES 之前添加以下内容:
UITabBarController *tbc = (UITabBarController*)self.window.rootViewController;
tbc.delegate = self;
Run Code Online (Sandbox Code Playgroud)
然后实现以下委托方法:
- (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);
}
Run Code Online (Sandbox Code Playgroud)
您需要将 viewController 变量转换为实际的视图控制器类,并将相关标签分配给每个视图控制器的选项卡栏项目。
| 归档时间: |
|
| 查看次数: |
1316 次 |
| 最近记录: |