【问题标题】:Blank detail view pushed from a TableView that was created programmatically从以编程方式创建的 TableView 推送的空白详细视图
【发布时间】:2012-12-17 23:23:18
【问题描述】:

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

这些显示在以编程方式实例化的表格中。

然后我想从这个表中按一行来详细了解该行,但是当我这样做时,显示的视图是空白的,但是与该类关联的所有方法都被触发(视图确实加载了,等等) .

我已经从其他人针对他们的问题提出的不同解决方案中尝试了 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];
}

DetailView的ViewDidLoad:

- (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。

我尝试通过以下方式从情节提要中实例化视图:

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

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

【问题讨论】:

    标签: iphone ios uitableview uinavigationcontroller storyboard


    【解决方案1】:

    您将 nil 作为 nib 名称发送,如果您没有 nib 文件,请不要使用 initWithNibName 函数分配消息详细信息视图。

    使用原始 init 或 initWithFrame。哪个适合你。

    祝你好运

    【讨论】:

    • 我误解了这个问题,您绝对应该使用带有有效 nib 文件名的 initwithnibname。这个 messagedetail 类是视图还是视图控制器?
    • messageDetail 是 MainStoryboar.Storyboard 上的 UIViewController
    • 然后将root设置为当前视图,之后推送消息详情。我假设您正在将新的视图控制器推送到另一个视图上。
    【解决方案2】:

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

        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];
    

    【讨论】:

    • 我正在使用情节提要,因此无法设置笔尖名称?
    • 在您提供的上述示例中,您使用的是故事板还是 Xib 的?
    • 不,这不是使用情节提要。只需使用第一行作为您的示例。您没有设置笔尖名称。你的设置为零。我希望我的视图转到详细视图,所以我有 initWithNibName:@"Detail_View"。你也应该这样做。即使有故事板
    • 恐怕还是空白,我尝试使用 nil 并设置故事板标识符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多