从iPhone中的TabViewController加载NIB文件的问题

时间:2011-06-01 11:02:53

标签: iphone objective-c uiviewcontroller uitableview nib

我有一个UITableViewController(MyViewController.xib)。这显示了3行的标题。我为每一行标题都有3个新的xib文件。每行选择我想加载XIB文件。当我点击RowIndex Selection时,我就到了这个地方。但是,当我试图加载NIB文件时,没有任何事情发生。我的意思是程序正在崩溃,NIB文件正在加载。

我在这里定义我的界面声明。

 #import <UIKit/UIKit.h>

 #import "HistoryShow.h"

@interface MyViewController : UITableViewController {

    NSArray *tableList;

   IBOutlet HistoryShow *historyController;



}

@property (nonatomic,retain) NSArray *tableList;

@property (nonatomic,retain) IBOutlet HistoryShow *historyController;

@end

我的实施细节如下。

 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


    NSString *str = [NSString stringWithFormat:@"%@",[tableList objectAtIndex:indexPath.row]]; //typecasting

     if([@"History" isEqual:str])
    {
       NSLog(@"!!!!!!!!!!!!!!!");   

     HistoryShow *detailViewController = [[[HistoryShow alloc]initWithNibName:@"HistoryShow" bundle:nil]autorelease];

 [historyController release]; 

    } 
}

这是令人印象深刻的“!!!!!!”在控制台上,但下一个“HistoryShow.xib”没有加载。

确切的问题是什么? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

您必须使用addSubview:将视图添加到当前视图中,或使用viewController推送navigationController以查看视图。

像这样的东西

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


NSString *str = [NSString stringWithFormat:@"%@",[tableList objectAtIndex:indexPath.row]]; //typecasting
if([@"History" isEqual:str])
{
NSLog(@"!!!!!!!!!!!!!!!");   
HistoryShow *detailViewController = [[HistoryShow alloc]initWithNibName:@"HistoryShow" bundle:nil];
[self.navigationController pushViewController:detailViewController animated:YES]; //  if you have a navigation controller
[detailViewController release]; 
} 
}

答案 1 :(得分:0)

您正在实例化detailViewController,但您没有做任何事情。

尝试在alloc detailViewController之后添加此内容:

[self presentModalViewController:detailViewController animated:YES];