PushViewController مع TableViewController في ViewController
سؤال
لدي UIViewController، وترد وحدة التحكم هذه في NavigationController. أقوم بإضافة JitalViewController في هذه العناء. أرغب في استدعاء طريقة PushViewController عندما أضغط على خلية من جدول طاولتي.
حاولت هذا:
ayabicviewcontroller.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
FirstView *myViewController = [[FirstView alloc] init];
[f myViewController];
}
UiviewController (Firstview)
-(void)pushIt
{
SecondView *sCont = [[SecondView alloc] initWithNibName:@"SecondView" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:sCont animated:YES];
NSLog(@"didSelect"); // is printed
[sCont release];
sCont = nil;
}
ولكن لا شيء يحدث. أضع NSLOG () لطريقة الدفع الخاصة بي وأستطيع رؤيتها. لذلك أنا لا أفهم لماذا لا أستطيع دفعه.
اي فكرة؟
المحلول
UIViewController
لديه خاصية اسمه navigationController
سيعود ذلك UINavigationController
إذا كان أحد موجود لمحكم الرأي الذي تم استدعاؤه منه.
باستخدام هذه الخاصية، يمكنك الضغط على "عرض وحدات التحكم" على مكدسة التنقل من عرض الجدول الخاص بك didSelectRowAtIndexPath:
طريقة.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
SecondView *sCont = [[SecondView alloc] initWithNibName:@"SecondView" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:sCont animated:YES];
[sCont release];
}
السبب في أن الرمز الحالي الخاص بك لا يعمل هو بسبب ما يلي:
- لديك بالفعل مثيل من firstviewcontroller، كما قلت إنك أضفت عرض جدول كوحدة فرعية
- تحاول إنشاء مثيل جديد ل FirstViewController عندما يقوم المستخدم بتصنيع خلية، والتي ليست موجودة على مكدس التنقل، لذلك في محاولة لدفع وحدة تحكم عرض على المكدس من هناك لا تعمل، لأن
navigationController
عائد العقارات لا شيء.
نصائح أخرى
أنت Alloc و Init myViewController ولكن لا تدفعها أبدا إلى التنقل أو النافذة أو أي شيء آخر، ثم دفعت SCOM إلى MyViewController، والتي غير موجودة في النافذة. أولا، حاول عدم استخدام MyViewController، ثم حاول دفع MyViewController إلى التنقل قبل دفع SCOMT في ذلك.