iOS:在拆分视图的主(根)视图之上显示一个新的模式视图
Posted
技术标签:
【中文标题】iOS:在拆分视图的主(根)视图之上显示一个新的模式视图【英文标题】:iOS: Displaying a new modal view on top of master (root) view in split view 【发布时间】:2011-03-18 15:17:35 【问题描述】:从初始列表(tableview)中选择特定对象后,我需要在主视图区域中调用一个新的模态视图。
试过这个:
//new view init:
clientList *clientListCon = [[clientList alloc] initWithNibName:@"clientList" bundle:nil];
//pushing
[[splitViewController.viewControllers objectAtIndex:0] presentModalViewController:clientListCon animated:YES];
我得到的一切:
MultipleDetailViews[12997:40b] -[UITableView presentModalViewController:animated:]: unrecognized selector sent to instance 0x584d800
2011-03-18 14:40:51.449 MultipleDetailViews[12997:40b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableView presentModalViewController:animated:]: unrecognized selector sent to instance 0x584d800'
*** Call stack at first throw:
(
0 CoreFoundation 0x017035a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x01857313 objc_exception_throw + 44
2 CoreFoundation 0x017050bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x01674966 ___forwarding___ + 966
4 CoreFoundation 0x01674522 _CF_forwarding_prep_0 + 50
5 MultipleDetailViews 0x00008051 -[RootViewController tableView:didSelectRowAtIndexPath:] + 354
6 UIKit 0x00a8fb68 -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 1140
7 UIKit 0x00a85b05 -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 219
8 Foundation 0x0079779e __NSFireDelayedPerform + 441
9 CoreFoundation 0x016e48c3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 19
10 CoreFoundation 0x016e5e74 __CFRunLoopDoTimer + 1220
11 CoreFoundation 0x016422c9 __CFRunLoopRun + 1817
12 CoreFoundation 0x01641840 CFRunLoopRunSpecific + 208
13 CoreFoundation 0x01641761 CFRunLoopRunInMode + 97
14 GraphicsServices 0x0205a1c4 GSEventRunModal + 217
15 GraphicsServices 0x0205a289 GSEventRun + 115
16 UIKit 0x00a26c93 UIApplicationMain + 1160
17 MultipleDetailViews 0x000069a4 main + 102
18 MultipleDetailViews 0x00006935 start + 53
)
terminate called after throwing an instance of 'NSException'
【问题讨论】:
【参考方案1】:好像应该是这样的:
[self presentModalViewController:clientListCon animated:YES];
我不知道您是如何从提供的代码中获得对 UITableView 的引用。
【讨论】:
在这种情况下,clientListCon 以全屏模式打开。我希望它只覆盖根视图。 UITable 来自通用的 SplitView 声明 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath //我需要: NSUInteger row = indexPath.row; if (row == 0) 推送一个新的模态控制器 这是可行的:[self.navigationController pushViewController:clientListCon animated:YES];但我正在寻找一种不使用导航控制器来显示模式视图的方法。 您正在寻找的效果是相当专业的,您不会找到任何开箱即用的解决方案。以上是关于iOS:在拆分视图的主(根)视图之上显示一个新的模式视图的主要内容,如果未能解决你的问题,请参考以下文章