-4

如在详细情节提要的 Xcode 中实现的,其中 3 个根据 id 与 Tableview 一起发布。表中的行具有名称和 ID(整数值)

If id= 1  i need load OneViewController
If id= 2 i need load TwoViewController
If id= 3 i need load ThreeViewController

我使用 Storyboard 中的导航控制器

4

1 回答 1

1

您需要将 viewControllers 添加到情节提要中,为它们提供与名称相同的 storyboardId。

在此处输入图像描述

创建一个 dataSourceArray,它将保存具有 Id 和 Name 值的字典对象

#define kItemId @"Id"
#define kItemTitle @"Name"

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.dataSourceArray = @[@{kItemId: @1,kItemTitle:@"First"},
                             @{kItemId: @2,kItemTitle:@"Second"},
                             @{kItemId: @3,kItemTitle:@"Third"}];

}


#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.dataSourceArray.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    cell.textLabel.text = self.dataSourceArray[indexPath.row][kItemTitle];

    return cell;
}

#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSDictionary *dict = self.dataSourceArray[indexPath.row];

    NSUInteger tag = [dict[kItemId]integerValue];

    NSString *identifier = nil;

    switch (tag) {
        case 1:
        {
            identifier = @"OneViewController";
            break;
        }
        case 2:{
            identifier = @"TwoViewController";
            break;
        }
        case 3:{
            identifier = @"ThreeViewController";
            break;
        }

        default:
            break;
    }

    UIViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:identifier];
    viewController.title = identifier;

    [self.navigationController pushViewController:viewController
                                         animated:YES];

    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

源代码

于 2013-05-06T20:17:57.753 回答