【问题标题】:iOS 5, storyboards: customize programmatically created UITableView for every UIViewiOS 5,故事板:为每个 UIView 自定义以编程方式创建的 UITableView
【发布时间】:2012-08-16 02:02:15
【问题描述】:

在情节提要中,我创建了一个 UIViewController 并将两个 UIView 添加到同一个情节提要中。然后添加 UISegmentedControl 以启用这些 UIView 之间的切换。

我用来切换UIView的方法:

-(IBAction)segmentValueChaged:(id)sender
{
if(self.segment.selectedSegmentIndex==0)
{
    [self.coinageView removeFromSuperview];
    [self.view addSubview:nominalsView];
    [self populateNominals:self.subCountryID];
}
else 
{
    [self.nominalsView removeFromSuperview];
    [self.view addSubview:coinageView];
}
}

以及在 UIView 上添加 UITableView 的方法:

-(void)populateNominals:(int)subCountryID
{
UITableView *nominalsTableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 372) style:UITableViewStylePlain];
//nominalsTableView.dataSource = self;
//nominalsTableView.delegate = self;
[self.nominalsView addSubview:nominalsTableView];
}

这种方法效果很好,我在切换段时弹出一个表格。

我的问题是,我在哪里可以为每个段(UIView)自定义每个 tableView?问题是我需要两个外观完全不同的表(不同的设计、cellForRowAtIndexPath 和不同的导航,而 didSelectRowAtIndexPath)。

提前谢谢你。

【问题讨论】:

    标签: ios cocoa-touch storyboard uisegmentedcontrol


    【解决方案1】:

    如果您有“两个外观完全不同的表”,则将每个表视图的数据源和委托设置为不同的对象。 意思是为每个表创建一个类/对象,作为表的数据源和委托。通常这些设置为“自我”,但没有什么可以说它们必须是那样。

    如果您懒惰并且不关心漂亮的可重用代码,您可以将 if/else 语句放在所有 tableView 委托和 dataSource 调用中,并比较传入的 tableView 变量以查看它是什么表。但这有点难看,很容易搞砸。尤其是当它增长到超过 2 种不同类型的表时。

    【讨论】:

    • 好的。谢谢拉斯的帮助。分离数据源和委托的想法在我脑海中旋转,只是认为还有其他一些令人惊叹的专业方法......我最近实施的丑陋方式让我感到恶心。我正在重用相同的 IBOutlet UITableView。它有效,但我有“第 9 细胞综合症”......我有几个关于单独数据源和委托的问题。将在其他问题主题中问它。谢谢你。纳特。
    猜你喜欢
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    相关资源
    最近更新 更多