मेरे पास तालिका के अलग-अलग प्रकार के टेबल दृश्य कक्षों के साथ एक टेबल दृश्य है। कोशिकाओं में से एक में, दो बटन होते हैं, जो दबाए जाने पर दृश्य नियंत्रक लोड करते हैं। मैं बटन प्रेस को संभालने के लिए निम्न फ़ंक्शन का उपयोग कर रहा हूं:आईओएस segue दो बार निष्पादित
- (IBAction)leftButtonPressed:(id)sender
{
// Getting the pressed button
UIButton *button = (UIButton*)sender;
// Getting the indexpath
NSIndexPath *indPath = [NSIndexPath indexPathForRow:button.tag inSection:0];
// Loading the proper data from my datasource
NSArray *clickedEvent = [[[SOEventManager sharedEventManager] eventsArray] objectAtIndex:indPath.row];
[[SOEventManager sharedEventManager] setSelectedEvent:clickedEvent[0]];
// Everything working as it should up to this point
// Performing seque...
[self performSegueWithIdentifier:@"buttonSegue" sender:self];
}
मेरा बटनसेग्यू एक नया दृश्य नियंत्रक धक्का देना है। बजाय एक बार धक्का की किसी भी तरह, यह दो बार जोर दे रहा प्रतीत होता है, तो मैं निम्न चेतावनी मिलती है:
2013-11-27 01:48:30.894 Self-Ordering App[2081:70b] nested push animation can result in corrupted navigation bar
2013-11-27 01:48:31.570 Self-Ordering App[2081:70b] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
मेरे मामले में यह एक दुर्घटना की ओर जाता है के बाद से वहाँ एक घटना जिसमें मैं एप्लिकेशन तुरंत पॉप करना चाहते हैं व्यू कंट्रोलर ताकि यह मेरे टेबल व्यू पर वापस जा सके। मैं इस के लिए एक alertview का उपयोग करें और निम्नलिखित के साथ घटना को संभाल:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *buttonTitle = [alertView buttonTitleAtIndex:buttonIndex];
// ...
// Additional checking of button titles....
else if ([buttonTitle isEqualToString:NSLocalizedString(@"Vissza", nil)])
{
[self.navigationController popViewControllerAnimated:YES];
}
}
यह मेरे नोट करने के लिए दिलचस्प हो सकता है कि मैं अपने "नियमित" तालिका दृश्य सेल से एक अन्य segue है, और उस मामले में मैं prepareForSegue का उपयोग : विधि
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"detailSegue"])
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
SOEvent *selectedEvent = [[[SOEventManager sharedEventManager] eventsArray] objectAtIndex:indexPath.row];
[[SOEventManager sharedEventManager] setSelectedEvent:selectedEvent];
}
}
इस मामले में दृश्य नियंत्रक पूरी तरह से धक्का दिया जाता है, और यदि आवश्यक हो तो भी तुरंत पॉप किया जाता है। मैं आईओएस 7 और एक्सकोड 5 पर इसका परीक्षण कर रहा हूं। मुझे पहले इस तरह की कोई समस्या नहीं आई है, किसी भी मदद की सराहना की जाएगी।
क्या आप वाकई इंटरफ़ेस बिल्डर में कार्यों को सही तरीके से तारित कर चुके हैं? हो सकता है कि आपने ईवेंट को वायर्ड किया है, कहें, दोनों अंदर छूएं और अंदर छूने के बजाय अंदर छूएं। या हो सकता है कि आपने इंटरफ़ेस बिल्डर में दोनों कोड से और फिर से segue असाइन किया हो। क्या आपने उन्हें चेक किया है? यह एक आम गलती है। –
अरे अरे .. आप वास्तव में सही हैं, मैं टेबल बटन डेटासेट विधियों में भी अपने बटन असाइन करता हूं .. आपके उत्तर के लिए धन्यवाद! –