سؤال

لدي 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 في ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top