Ios 以编程方式打开新的视图控制器会给我一个黑屏

Ios 以编程方式打开新的视图控制器会给我一个黑屏,ios,uiviewcontroller,Ios,Uiviewcontroller,我检查过类似的问题,但没有一个对我的案例有效——它们都提到了我没有的函数loadView。我认为我想做的很容易,但我不知道为什么会发生 我希望在按下单元格中的按钮时以编程方式打开新的视图控制器。这是我的密码: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { dealViewController=[[DealViewController alloc]i

我检查过类似的问题,但没有一个对我的案例有效——它们都提到了我没有的函数loadView。我认为我想做的很容易,但我不知道为什么会发生

我希望在按下单元格中的按钮时以编程方式打开新的视图控制器。这是我的密码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    dealViewController=[[DealViewController alloc]init];
    if (indexPath.row==0){
        [self presentModalViewController:(UIViewController *)dealViewController animated:TRUE];
    }

}
在我的另一个控制器中:

@implementation DealViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    NSLog(@"Opened");
}
打开的屏幕是打印的,但模拟器显示一个黑屏。我也试过:

dealViewController=[[DealViewController alloc]initWithNibName:@"DealViewController" bundle: nil];

但我有一个错误。我做错了什么?

如果您使用的是情节提要,请使用以下代码

   - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"dealViewController" bundle:nil];

    dealViewController=[[DealViewController alloc]initWithNibName:@"DealViewController" bundle: nil];
        if (indexPath.row==0){
            [self presentModalViewController:(UIViewController *)dealViewController animated:TRUE];
        }

    }

如果您正在使用故事板,请使用以下代码

   - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"dealViewController" bundle:nil];

    dealViewController=[[DealViewController alloc]initWithNibName:@"DealViewController" bundle: nil];
        if (indexPath.row==0){
            [self presentModalViewController:(UIViewController *)dealViewController animated:TRUE];
        }

    }
试试这个:

此外,您还可以通过performsgue:withIdentifier执行此操作

试试这个:

此外,您还可以通过performsgue:withIdentifier执行此操作


你有没有试着改变背景颜色,看看是否有什么改变?你在用故事板吗?看起来它正在加载你的vc。有什么问题?@CRDave是的,我在用故事板。我改变了颜色,但还是变黑了。如果你使用的是故事板,那么你需要从故事板以编程方式加载VC,即不使用initWithNib或使用segue。你是否尝试更改背景颜色并查看是否有变化?你使用的是故事板吗?它似乎正在加载你的VC。有什么问题?@CRDave是的,我在用故事板。我改变了颜色,但还是黑色。如果你使用的是故事板,那么你需要从故事板以编程方式加载VC,即不使用initWithNib或使用segue。