iOS - 带有表格视图和子视图的选项卡式应用程序
Posted
技术标签:
【中文标题】iOS - 带有表格视图和子视图的选项卡式应用程序【英文标题】:iOS - Tabbed aplication with table view and subview 【发布时间】:2013-02-16 18:38:20 【问题描述】:我有一个问题。在我的应用程序(它是选项卡式)中,我有一个带有一些文本的视图控制器和第二个带有表格视图(RSS 阅读器)的视图控制器。当我只有 RSS 并将其设置为单视图应用程序时,子视图表单 rss 可以工作,但是当我设置选项卡式应用程序并单击表格视图中的某些帖子时,子视图没有显示...有人可以帮帮我吗?
这是我的代码:
AppDelegate.h
#import <UIKit/UIKit.h>
@interface MWFeedParserAppDelegate : NSObject <UIApplicationDelegate>
UIWindow *window;
UINavigationController *navigationController;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@end
AppDelegate.m
#import "MWFeedParserAppDelegate.h"
#import "ViewController1.h"
#import "RootViewController.h"
@implementation MWFeedParserAppDelegate
@synthesize window;
@synthesize navigationController;
#pragma mark -
#pragma mark Application lifecycle
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
// Override point for customization after app launch
UITabBarController *tbc = [[UITabBarController alloc]init];
ViewController1 *vc1 = [[ViewController1 alloc]init];
RootViewController *vc2 = [[RootViewController alloc]init];
[vc1.tabBarItem setTitle:@"Tab1"];
[vc2.tabBarItem setTitle:@"Tab2"];
[tbc setViewControllers:[NSArray arrayWithObjects:vc1, vc2, nil]];
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
[window setRootViewController:tbc];
return YES;
- (void)applicationWillTerminate:(UIApplication *)application
// Save data if appropriate
#pragma mark -
#pragma mark Memory management
- (void)dealloc
[navigationController release];
[window release];
[super dealloc];
@end
【问题讨论】:
【参考方案1】:从 dealloc 中,我看到你没有使用 arc。
你有一些内存泄漏;请务必在您的didFinishLaunchingWithOptions
中释放vc1
和vc2
,标签栏控制器将保留它们。
你可能不需要 navigationController
属性,建议你删除它,直到你知道你需要它为止。
我认为您需要先将 RSS 视图 (vc2?) 添加到导航控制器,然后再添加到标签栏控制器,如下所示:
[tbc setViewControllers:[NSArray arrayWithObjects:vc1, [[[UINavigationController alloc] initWithRootViewController:vc2] autorelease], nil]];
并删除这一行:
[window addSubview:[navigationController view]];
祝你好运!!
edit再拼写一点:
ViewController1 *vc1 = [[[ViewController1 alloc] init] autorelease];
RootViewController *vc2 = [[[RootViewController alloc] init] autorelease];
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:vc2] autorelease];
UITabBarController *tbc = [[[UITabBarController alloc] init] autorelease];
[tbc setViewControllers:@[vc1, navController]];
[window makeKeyAndVisible];
[window setRootViewController:tbc];
【讨论】:
以上是关于iOS - 带有表格视图和子视图的选项卡式应用程序的主要内容,如果未能解决你的问题,请参考以下文章
我有一个选项卡式视图,如何触发视图运行一些代码,视图由选项卡式视图激活?
带有 Xcode 6 的 iOS 8:PSCollectionView 不可滚动且单元格不可使用选项卡式应用程序选择