0

我想要一个静态分组的 uitableview,在用户单击的每个单元格上,它将把他带到另一个 uiviewcontroller 那里,他需要通过 xcode 提供的各种工具提供信息。这是一个例子:

第一个单元格会将他带到一个 vc 那里,用户将输入姓名、中间名和姓氏。

第二个单元格将允许用户选择日期和时间。第三个单元格将允许用户输入地址,依此类推,我将有大约 6-8 个单元格

唯一的答案是有很多 viewcontrollers@storyboard/nib 文件吗?或者有什么方法可以使用 1 个视图控制器来完成这一切,这会根据您选择的单元格而改变?我问是因为我想考虑性能并使应用程序更具动态性。

4

2 回答 2

0

您可以使用相同的 Xib,并且可以根据您的要求更改标签的文本。一次,您正在选择一个单元格,根据单元格的选择,您可以传递一个整数,并且在第二个控制器的 viewDidLoad 中,您可以隐藏不需要的 UI 元素。

如果您使用 StoryBoard,您可以使用:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    [self performSegueWithIdentifier: @"MySegue" sender: self];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([segue.identifier isEqualToString:@"MySegue"]){
      StoryDetails *controller = (StoryDetails *)segue.destinationViewController;
      controller.dataModel= storyModel;         //pass the data here

}

在 Xib 的情况下:

YourViewController *controller=[[YourViewController alloc]initWithNibName:@"ViewControllerName" bundle:nil];
 controller.dataModel= storyModel;         //pass the data here
[self presentViewController:viewController animated:YES completion:nil];
于 2013-08-12T17:05:13.000 回答
0

在您的情况下,我更愿意按功能分离所有不同的视图控制器。如果您采用使用标签以编程方式隐藏此功能所需/不需要的 UIControls 的路线,您将有很多代码气味。随着您添加更多功能,xib 和 .h/.m 将变得更加复杂。

//tableViewDidSelectRow...
if (indexPath.row == 0) {
    ViewControllerName *nameView = ...
    //display this view...
} else if (indexPath.row == 1) {
    ViewControllerDate *dateView = ...
    //display this view...
} else if (indexPath.row == 2) {
    ViewControllerAddress *addressView = ...
    //etc etc etc
}
于 2013-08-12T17:39:06.190 回答