空白细节视图是从编程创建的TableView中推入的



我的设置使用了一个故事板,我在其中创建了一个登录,然后是一个主屏幕,用户可以在其中按下一个按钮来显示他们的消息。

它们显示在一个表中,该表以编程方式实例化。

从这个表中,我想要按下一行以进入该行的详细信息,但是当我这样做时,显示的视图是空白的,但是与类相关的所有方法都被触发(view did load,等等)。

我真的尝试了10种不同的方法,从别人对他们的问题提出的不同的解决方案,但没有一个奏效。

创建新视图并推送它的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    messageDetail *messageDetailView = [[messageDetail alloc]initWithNibName:nil bundle:nil];
    messageDetailView.message = [entityObjects objectAtIndex:indexPath.row];
    [self.navigationController pushViewController:messageDetailView animated:YES];
}

ViewDidLoad of DetailView:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    NSLog(@"Message Detail:n%@",message);
    messageTitle.text = message.message_title;
    messageBody.text = message.message_xml;
}

我尝试过使用segueIdentifier路由,然后拦截prepareSegue:向新视图添加数据,但由于tableView是以编程方式创建的,因此没有segue。

我已经尝试实例化的视图从storyboard通过:

messageDetailView = [self.storyboard instantiateViewControllerWithIdentifier:@"MDV"];

但是应用程序崩溃了,因为没有带标识符的视图,即使我设置了标识符

你发送nil作为nib名称,如果你没有nib文件,不要分配消息细节视图与initWithNibName函数。

使用原始init或initWithFrame。

好运

我基本上对这里的代码做了相同的事情。希望能有所帮助

    Detail_View *next=[[Detail_View alloc] initWithNibName:@"Detail_View" bundle:nil];
    //These are just values that I needed to set before going to the next page.
    //You can use this if you want to pass over the value of your table row
    //otherwise ignore this
    next.htmlContents= [[storage_array objectAtIndex:indexPath.row]objectForKey:@"title"];
    next.titleText=[[storage_array objectAtIndex:indexPath.row] objectForKey:@"title"];
    [self.navigationController pushViewController:next animated:YES];

最新更新