首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重用UIViewController

重用UIViewController
EN

Stack Overflow用户
提问于 2013-08-13 00:47:02
回答 2查看 180关注 0票数 0

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

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

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

解决这个问题的唯一方法就是拥有大量的视图控制器@storyboard/nib文件吗?或者有一种方法可以使用一个视图控制器来完成这一切,该视图控制器将根据您选择的单元格而变化?我之所以问这个问题,是因为我想把性能考虑在内,让应用程序更具动态性。

EN

回答 2

Stack Overflow用户

发布于 2013-08-13 01:05:13

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

如果你使用的是StoryBoard,你可以像这样使用:

代码语言:javascript
复制
- (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的情况下:

代码语言:javascript
复制
YourViewController *controller=[[YourViewController alloc]initWithNibName:@"ViewControllerName" bundle:nil];
 controller.dataModel= storyModel;         //pass the data here
[self presentViewController:viewController animated:YES completion:nil];
票数 0
EN

Stack Overflow用户

发布于 2013-08-13 01:39:06

在您的例子中,我更倾向于通过函数分离出所有不同的viewControllers。如果你使用标签来以编程方式隐藏这个函数所需要/不需要的UIControls,你将会有很多代码的味道。随着您添加更多的函数,xib和.h/.m将变得更加复杂。

代码语言:javascript
复制
//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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18192384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档