这是我的第一个 iOS 应用。
我正在制作一个带有导航控制器和标签栏控制器的应用程序。每个标签栏控制器都有一个表格视图,其中每个单元格可以加载另一个表格,或者可能是带有数据的自定义视图(如一堆标签和图像) - 这取决于内容。我正在以编程方式进行。
因为我这样做是为了尽可能灵活,所以我认为将视图彼此分开可能是个好主意,这样如果将设计、布局或新数据添加到其中一个视图中,就可以很容易地放入一个新视图。最后的意见。我这样做的目的是我可以随时改变主意它的结构。但是,这让我感到焦虑,因为有些事情是不对的。
选项卡代表相关类型的数据(例如音乐、电影、视频),表格单元代表基于更大选项卡的类别(例如专辑艺术、巡演日期、乐队推特)的相似属性。由于所有信息都可能如此不同,我想这样做。在表格视图单元格选择的最后将是具有适当数据的自定义视图。不过,它总是从表格视图开始。
AppDelegate.m
ViewController1 *vc1 = [[ViewController1 alloc] init];
ViewController2 *vc2 = [[ViewController2 alloc] init];
ViewController3 *vc3 = [[ViewController3 alloc] init];
ViewController4 *vc4 = [[ViewController4 alloc] init];
ViewController5 *vc5 = [[ViewController5 alloc] init];
UITabBarController *tbc = [[UITabBarController alloc] init];
NSArray *viewControllers = [NSArray arrayWithObjects:vc1, vc2, vc3, vc4, vc5];
[tbc setViewControllers:viewControllers];
// nav controller is a property because another initial method returns the the view if conditions are met
[self.nc = [[UINavigationController alloc] initWithRootViewController:tbc];
[[self window] setRootViewController:self:nc;
[self.window makeKeyAndVisible];
这会将一堆视图控制器设置到选项卡栏中,然后将其放入加载到视图中的导航控制器中。
所有ViewController#.m
文件看起来都相似:
- (void) viewDidLoad {
[super viewDidLoad];
self.tabBarController.title =@”Title”;
TableViewController# *tvc = [[TableViewController# alloc] init];
UIView *new = [[UIView alloc] initWithFrame:CGRectMake(0, 44, 420, 420);
[self addChildViewController:tvc];
[new addSubview:tvc.view];
[self.view addSubview:new];
}
然后表格视图正常加载它们的单元格。目前,由于出现了这个问题,单元格没有连接到它们的目标视图。这行得通,但感觉真的很脏和不正确。标签栏控制器加载一个视图,其灵魂目的是加载另一个视图?这不可能是正确的,但这是我能弄清楚的唯一方法。我必须为每个后续的 tableview 执行此操作?!我将有一百个视图控制器,这让我很害怕。
此外,设置 CGRect 似乎工作正常,但我不得不放入一个空的表页脚,因为无论我设置什么尺寸,它总是将单元格放在选项卡栏下方。很不雅。虽然它似乎在 3.5 英寸和 4 英寸设备上运行良好,但我不知道为什么,我设置了静态视图大小,对吗?
在深入了解之前,我可以通过哪些方式优化此工作流程?如果故事板是答案,那么请指点我一个非常好的教程,当我使用故事板时,我似乎永远无法正确连接。