UIViewController和UITableViewController,如何更改self.view再返回?

时间:2011-11-10 00:02:25

标签: objective-c ios xcode

我不想添加子视图,而是将“self.view”更改为另一个视图,例如(警告视图)然后在用户抑制警告后我想切换回来。当我尝试切换回原始视图时,我只是因为我无法理解的原因而得到一个空白屏幕。

以下是我目前在其中一个UITableViewControllers

中的内容
//Show warning view controller
self.warningViewControler = [[[WarningViewController alloc] init] autorelease];
self.view = self.warningViewController.view;


//Then later
self.view = self.tableView; //<< Dosnt work

2 个答案:

答案 0 :(得分:0)

如果要更改视图,并且原始视图已定义/链接到XCode,则必须在将self.view更改为其他视图之前保留它。如果没有,原始视图将被释放并使用它可能会导致不良事件发生。

警告:

self.warningViewControler = [[[WarningViewController alloc] init] autorelease];
self.view = self.warningViewController.view

是一个糟糕的坏电话。因为您自动释放控制器但使用其视图。因此,在一段时间后,您将使用已发布的控制器保留视图。保留控制器并在不再需要它时自行释放它。

答案 1 :(得分:0)

这是我认为你想要做的更好的方式:

WarningViewController *warningViewController = [[WarningViewController alloc] initWithNibName:@"theRightNiborNil" bundle:nil];

[self presentModalViewController:warningViewController animated:YES];

// or if you don't need to support iOS4 any more:

[self presentViewController:warningViewController animated:YES completion:nil]

// and if you aren't using ARC yet, then [warningViewController release];

然后在您的WarningViewController中,您需要一些调用的操作:

[self dismissModalViewControllerAnimated:YES];

// or again if this is iOS5..

[self dismissModalViewControllerAnimated:YES completion:nil];

希望有所帮助。