在iOS 7.1上,如果没有view controller,则无法转移到新屏幕

在iOS 7.1上,如果没有view controller,则无法转移到新屏幕,ios,objective-c,json,ios7.1,Ios,Objective C,Json,Ios7.1,我有一个通过JSON动态创建的表视图,我希望当我点击表视图中的一个项目时,它会被转移到一个新屏幕上。 我使用我在网上找到的一个项目完成了这项工作,但该项目是针对较旧的iOS的,并且使用nibs。 我想要传输到的屏幕也必须是动态的,通过相同的JSON文件。我需要知道如何创建要传输到的动态屏幕,以及如何使当前代码能够传输到该屏幕 这是我当前要转移到新屏幕的代码,请记住它来自旧的iOS: #pragma mark - Table view delegate - (void)tableView:(UIT

我有一个通过JSON动态创建的表视图,我希望当我点击表视图中的一个项目时,它会被转移到一个新屏幕上。 我使用我在网上找到的一个项目完成了这项工作,但该项目是针对较旧的iOS的,并且使用nibs。 我想要传输到的屏幕也必须是动态的,通过相同的JSON文件。我需要知道如何创建要传输到的动态屏幕,以及如何使当前代码能够传输到该屏幕

这是我当前要转移到新屏幕的代码,请记住它来自旧的iOS:

#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath    
{
    // Navigation logic may go here. Create and push another view controller.
    PeopleDetailsViewController *detailViewController = [[PeopleDetailsViewController      alloc] initWithStyle:UITableViewStyleGrouped];
    detailViewController.details = self.data[indexPath.row];
    [self.navigationController pushViewController:detailViewController animated:YES];
}
编辑。这是创建详细信息视图的当前代码。需要动态的视图:

#import "PeopleDetailsViewController.h"

@interface PeopleDetailsViewController ()

@end

@implementation PeopleDetailsViewController
@synthesize details;

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
    // Custom initialization
}
return self;
}

- (NSString *)name {
return [NSString stringWithFormat:@"%@ %@", self.details[@"Tag"],     self.details[@"B"]];
}

- (void)viewDidLoad {
[super viewDidLoad];

// Uncomment the following line to preserve selection between presentations.
// self.clearsSelectionOnViewWillAppear = NO;

// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;

self.title = [self name];
 }

 - (void)didReceiveMemoryWarning
 {
   [super didReceiveMemoryWarning];
     // Dispose of any resources that can be recreated.
 }

 #pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
     return 1;
 }

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:  (NSInteger)section {
        // Return the number of rows in the section.
        return 2;
    }

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:     (NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell)
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];

switch (indexPath.row) {
    case 0:
        cell.textLabel.text = [self name];
        cell.detailTextLabel.text = @":Tag";
        break;
    case 1: {
        cell.detailTextLabel.text = @":Value";
        cell.textLabel.text = self.details[@"Value"];
        break;
    default:
        break;
    }
}

return cell;
}   

你需要的东西几乎都有了。您的表视图数据源目前是硬编码的,因此您必须更改代码的这一部分。方法名称是非常不言自明的

你应该做什么:

在PeopleDetailsViewController中添加一个名为“-void setDetails:typename”的方法,该方法将用于将详细信息传递给新控制器。此函数结束时,应调用[self.tableView reloadData];-这将告诉您的表视图数据已经更改,它应该调用pragma mark-table view data source下的方法重新加载数据

更改上面的mentiod方法,使它们不返回硬编码的值,而是返回详细传递的值


如果需要非标准表格单元格,您可以在Interface Bulder中设计它们,并使用IBOutlets为它们分配一个自定义类,然后用类似的数据填充它们。

为什么不简单地通过一个方法传递细节,然后根据它们创建/填充您的视图?我很想这样做,但我不知道lolAny的想法有多好。谢谢