Segue существует? - PullRequest
       5

Segue существует?

4 голосов
/ 03 апреля 2012

Кто-нибудь знает, существует ли способ определить, существует ли переход с конкретным именем? Или, в качестве альтернативы, если есть способ получить список всех именованных сегментов, которые iOS знает о

Ответы [ 3 ]

2 голосов
/ 16 января 2013

нет, ваш метод определяет только, когда срабатывает определенный переход.но вы не можете проверить, существует ли переход, иначе, чем пытаться его назвать.похоже, единственный способ - использовать @try @catch:

@try {
    [self performSegueWithIdentifier:@"Replace_Connected" sender:self];
}
@catch (NSException *exception) {
    NSLog(@"%@  no segue with identifier 'Replace_Connected' : %@", [self description], exception);
}
@finally {    }
2 голосов
/ 16 января 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? Я думаю, у вас есть законные основания для запроса функции.

0 голосов
/ 03 апреля 2012

Вы можете проверить, существует ли Segue, используя метод 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
    }
}

Если есть способ перечислить все сегы, я не знаю об этом, и я не видел его в документах.

...