我目前正在使用最新版本的Xcode(Xcode 4.2 + iOS 5 SDK)。我的应用程序在iOS 3.1.3上运行到iOS 4.x几个月没有问题。但不是在iOS 5上。
在调试器中,我可以看到我的变量编写不正确。事实上,其他变量而不是预期的变化。
我想初始化一个新的视图控制器,然后切换。这是我的代码:
@interface ReviewDetailController : UIViewController <UIWebViewDelegate>
{
IBOutlet UIBarButtonItem *btnBack;
IBOutlet UIBarButtonItem *btnRestore;
IBOutlet UINavigationItem *navBar;
UIWebView *webView;
NSIndexPath *tabIndex;
NSString *htmlTemplate;
int entry;
id prevController;
}
@property (nonatomic, retain) IBOutlet UIWebView *webView;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *btnBack;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *btnRestore;
@property (nonatomic, assign) IBOutlet UINavigationItem *navBar;
@property (nonatomic, retain) NSString *htmlTemplate;
@property (nonatomic, retain) NSIndexPath *tabIndex;
@property (nonatomic, retain) id prevController;
@property (readwrite, assign) int entry;
- (DataModel *) dataModel;
- (IBAction) goBack: (id) sender;
- (IBAction) restore: (id) sender;
@end
当点击listView中的项目时,应该进行切换:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath {
ReviewDetailController *ctr = [[ReviewDetailController alloc] initWithNibName:@"ReviewDetailView" bundle:nil];
ctr.tabIndex = newIndexPath;
ctr.entry = [[[removedData objectAtIndex:newIndexPath.row] objectForKey:@"Entry"] intValue];
ctr.prevController = self.tabBarController.selectedViewController;
self.tabBarController.selectedViewController = ctr;
[ctr release];
}
在init(第一行)ctr看起来不错之后:
ctr ReviewDetailController * 0x736f6c0
tabIndex NSIndexPath * 0x0
htmlTemplate NSString * 0x0
entry int 0
prevController id 0x0
下一行的一步应设置tabIndex,但htmlTemplate已更改!
ctr ReviewDetailController * 0x736f6c0
tabIndex NSIndexPath * 0x0
htmlTemplate NSIndexPath * 0x752b2f0
entry int 0
prevController id 0x0
下一行应设置条目,但prevController获取条目的值(int 2):
ctr ReviewDetailController * 0x736f6c0
tabIndex NSIndexPath * 0x0
htmlTemplate NSIndexPath * 0x752b2f0 Variable is not a CFString
entry int 0
prevController id 0x2
此外,下一行未按预期设置prevController。
如前所述,此代码仍然适用于iOS 5之前的设备和模拟器。 我已经尝试重新排序变量,但没有成功。一定有什么不对劲,但我看不清楚。所以我希望,更有经验的人会看到并告诉我该怎么做。
答案 0 :(得分:0)
问题在于
self.tabBarController.selectedViewController = ctr;
在iOS5中,不再允许更改选项卡的视图控制器。我必须在此选项卡上安装导航控制器,然后按下并弹出其他视图,而不是更改选项卡的控制器(如IB中所定义)。
我正在运行这个问题,因为我在使用iOS5测试时没有CrashReport或任何控制台输出。 iOS4的问题并没有发生。