【发布时间】:2015-02-09 06:23:26
【问题描述】:
我有一个名为 StartViewController 的 UIViewController,其中有一个 textview。点击 url 时会调用 text view 方法。
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
NSString *str = URL.resourceSpecifier;
NSInteger length = str.length;
if (length > 1)
{
AViewController *aView = [[SearchViewController alloc] init];
aView.query = str;
[self.navigationController pushViewController:aView animated:YES];
return NO;
}
}
但是当导航控制器被推送一个值和动画时,它并不顺利。它运行到一半然后消失并显示 aView。
为什么?
【问题讨论】:
-
首先,导航控制器没有被推送,aView 是。当您说“它走了一半”时,“它”是什么?你在哪里制作 aView 的视图?
-
这不取决于您在
UITextView的委托方法中所做的事情。我认为,您正在对AViewController的视图生命周期方法(例如主线程上的viewDidLoad或viewWillAppear:)进行一些昂贵的操作(可能从互联网同步加载?)。 -
你是在设备还是模拟器上测试这个?可能只是模拟器动作慢。您的代码看起来不错,如果设备上的速度很慢,可能会在后台发生代价高昂的事情,如上所述。
-
我将不得不检查我在当前视图控制器中进行了哪些保存。 aView 只是一个空视图,带有一个通过属性(查询)传入的标签。
标签: ios uiviewcontroller ios8 uinavigationcontroller