Кто-нибудь знает, есть ли способ определить, существует ли переход с определенным именем? Или, в качестве альтернативы, если есть способ получить список всех именованных переходов, о которых знает iOS
Существует ли Segue?
Ответы (3)
нет, ваш метод определяет только запуск определенного перехода. но вы не можете проверить, существует ли переход, иначе, чем попытаться вызвать его. кажется, что единственный способ — использовать @try @catch :
@try {
[self performSegueWithIdentifier:@"Replace_Connected" sender:self];
}
@catch (NSException *exception) {
NSLog(@"%@ no segue with identifier 'Replace_Connected' : %@", [self description], exception);
}
@finally { }
person
Diwann
schedule
16.01.2013
Я предлагаю вам зарегистрировать ошибку. Раскадровка четко знает все переходы, исходящие из данной сцены:
<viewController id="2" customClass="ViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="3">
<rect key="frame" x="0.0" y="20" width="320" height="460"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
<connections>
<segue destination="t3N-Fe-gqq" kind="modal" identifier="myCoolSegue" id="AYQ-C4-4vO"/>
</connections>
</viewController>
Так почему же экземпляр контроллера представления не может запрашивать эту информацию? Кроме того, у контроллера представления есть свойство storyboard
, так почему же у него нет свойства segues
? Я думаю, у вас есть законные основания для запроса функции.
person
matt
schedule
16.01.2013
Вы можете проверить, существует ли переход, используя метод prepareForSegue
:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure we are dealing with the proper Segue
if ([segue.identifier isEqualToString:@"MySegueID"]) {
// Exists, do something
}
}
Если есть способ перечислить все переходы, я не знаю об этом и не видел его в документации.
person
LJ Wilson
schedule
03.04.2012