iOS - ViewController中的第三个TableView没有加载nib

时间:2017-03-22 01:54:41

标签: ios objective-c uitableview

我正在尝试在我的MAX_WRONG = len(HANGMAN) - 1 # creating list of random words WORDS = ("TECHNOLOGY", "PYTHON", "SCRIPT", "PROCESSOR", "RANDOM", "COMPUTING") # initialize variables word = random.choice(WORDS) so_far = "-" * len(word) # one dash for every letter in the word to be guessed wrong = 0 # number of wrong guesses made used = [] # letters already guessed # creating the main loop print("Welcome to Hangman. Good luck!") while wrong < MAX_WRONG and so_far != word: print(HANGMAN[wrong]) print("\nYou've used the following letters:\n", used) print("\nSo far, the word is:\n", so_far) # getting the player's guess guess = input("\n\nEnter your guess: ") guess = guess.upper() while guess in used: print("You've already guessed the letter", guess) guess = input("\nEnter your guess: ") guess = guess.upper() used.append(guess) # checking the guess if guess in word: print("\nYes!", guess, "is in the word!") # create a new so_far to include guess new = "" for i in range(len(word)): if guess == word[i]: new += guess else: new += so_far[i] so_far = new else: print("\nSorry,", guess, "isn't in the word.") wrong += 1 # ending the game if wrong == MAX_WRONG: print(HANGMAN[wrong]) print("\nYou lose!") else: print("\nYou guessed it!") print("The word was:", word) ext() 内填充3个不同的TableViews(根据所选的ViewController显示不同的广告资料) - UISegmentControlsidetableViewneighboursView。前两个填充完美,但第三个(friendsView)似乎没有加载单元格。见下面的代码。知道为什么?我觉得我在neighboursView错误中定义了第三个笔尖?

ViewController.h

viewdidLoad

ViewController.m

- (IBAction)segmentControl:(id)sender;
@property (weak, nonatomic) IBOutlet UISegmentedControl *segmentControl;
@property (weak, nonatomic) IBOutlet UITableView *sidetableView;
@property (strong, nonatomic) NSMutableArray *myFriendData;
@property (weak, nonatomic) IBOutlet UITableView *neighboursView;
@property (strong, nonatomic) NSMutableArray *friendData;
@property (strong, retain) NSMutableArray *neighbourData;

@property (strong, nonatomic) IBOutlet UITableView *friendsView;

4 个答案:

答案 0 :(得分:1)

当然,您的第三张表格无法加载单元格...您在第三个IF语句中错过return cell; ...

答案 1 :(得分:0)

试试这种方式 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {     int numberOfRows; //此变量用于返回单元格返回的数量     //在这里查看你的表格     if(tableView == self.sidetableView){           numberOfRows = [self.myFriendData count];     } else if(tableView == self.friendsView){           numberOfRows = [self.friendData count];     } else if(tableView == self.neighboursView){           numberOfRows = [self.neighbourData count];     } else {           numberOfRows = 0;     }     return numberOfRows; }

答案 2 :(得分:0)

回答编辑代码

<强> ViewController.h

- (IBAction)segmentControl:(id)sender;
@property (weak, nonatomic) IBOutlet UISegmentedControl *segmentControl;
@property (weak, nonatomic) IBOutlet UITableView *sidetableView;
@property (strong, nonatomic) NSMutableArray *myFriendData;
@property (weak, nonatomic) IBOutlet UITableView *neighboursView;
@property (strong, nonatomic) NSMutableArray *friendData;
@property (strong, retain) NSMutableArray *neighbourData;

我更喜欢使用weak引用而不是strong

@property (weak, nonatomic) IBOutlet UITableView *friendsView;

<强> ViewController.m

我想你可能会错过在numberOfRowsInSection中返回数组的计数。我注意到你在cell tableView中cellForRowAtIndexPath还没有返回neighboursView

- (void)viewDidLoad {
        [super viewDidLoad];
        //remove un-necessary code
        UINib *nib = [UINib nibWithNibName:@"sidebarCell" bundle:nil];
        [self.friendsView registerNib:nib forCellReuseIdentifier: @"sidebarCell"];
        [self.neighboursView registerNib:nib forCellReuseIdentifier: @"sidebarCell"];
        nib = [UINib nibWithNibName:@"MyFriendTableViewCell" bundle:nil];
        [self.sidetableView registerNib:nib forCellReuseIdentifier: @"MyFriendTableViewCell"];
 }

- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView == self.sidetableView) {
        if ([self.myFriendData count] > 0) {
            return [self.myFriendData count];
        } else {
             return 0;
        }
    }
    if (tableView == self.friendsView) {
        if ([self.friendData count] > 0) {
             return [self.friendData count];

        } else {
            return 0;
        } 
    }
     else {
      //Are you forgetting un-commenting this??
      //  return [self.neighbourData count];
      return [self.neighbourData count];

    }
    return 0;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
       if (tableView == self.sidetableView) {
             self.sidetableView.separatorStyle = UITableViewCellSeparatorStyleNone;
             MyFriendTableViewCell *cell = (MyFriendTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"MyFriendTableViewCell"];
             NSDictionary *friendsName = [self.myFriendData objectAtIndex:indexPath.row];
             [[cell friendName] setText:[friendsName objectForKey:@"title"]];
             NSDictionary *friendsBio = [self.myFriendData objectAtIndex:indexPath.row];
             [[cell friendBio] setText:[friendsBio objectForKey:@"field_friendbio"][@"und"][0][@"safe_value"]];
             NSString *profilePath = [[self.myFriendData objectAtIndex:indexPath.row] objectForKey:@"field_picture"][@"und"][0][@"safe_value"];
             [cell.friendPic sd_setImageWithURL:[NSURL URLWithString:profilePath]];
             NSLog(@"This is profilePath %@",profilePath);
             return cell;
     }
     if (tableView == self.friendsView)
     {
            self.friendsView.separatorStyle = UITableViewCellSeparatorStyleNone;
            sidebarCell *cell = (sidebarCell *)[tableView dequeueReusableCellWithIdentifier:@"sidebarCell"];
            NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"sidebarCell" owner:self options:nil];
            cell = [nib objectAtIndex:0];
            NSDictionary *userName = [self.friendData objectAtIndex:indexPath.row];
            [[cell username] setText:[userName objectForKey:@"node_title"]];

            NSDictionary *userBio = [self.friendData objectAtIndex:indexPath.row];
            [[cell userDescription] setText:[userBio objectForKey:@"body"]];
            NSString *profilePath = [[self.friendData objectAtIndex:indexPath.row] objectForKey:@"friendphoto"];
            [cell.usermini sd_setImageWithURL:[NSURL URLWithString:profilePath]];
            return cell;

       } else {
            sidebarCell *cell = (sidebarCell *)[tableView dequeueReusableCellWithIdentifier:@"sidebarCell"];
            NSDictionary *userName = [self.neighbourData objectAtIndex:indexPath.row];
            [[cell username] setText:[userName objectForKey:@"first name"]];
            NSDictionary *userlast = [self.neighbourData objectAtIndex:indexPath.row];
            [[cell lastName] setText:[userlast objectForKey:@"last name"]];
            NSDictionary *userBio = [self.neighbourData objectAtIndex:indexPath.row];
            [[cell userDescription] setText:[userBio objectForKey:@"userbio"]];
            NSString *profilePath = [[self.neighbourData objectAtIndex:indexPath.row] objectForKey:@"photo_path"];
            [cell.usermini sd_setImageWithURL:[NSURL URLWithString:profilePath]];
            NSLog(@"This is profilePath %@",profilePath);

            // are you forgetting to return cell?
            return cell;
      }
  }
   - (IBAction)segmentControl:(id)sender {

        UISegmentedControl *segmentedControl = (UISegmentedControl *) sender;
        NSInteger selectedSegment = segmentedControl.selectedSegmentIndex;

        switch (selectedSegment)
        {
             case 0:
                   [self.sidetableView setHidden:NO];
                   [self.neighboursView setHidden:YES];
                   [self.friendsView setHidden:YES];

                    NSLog(@"Requests!");
                    break;
             case 1: //FRIENDS MAP VIEW

                  [self.sidetableView setHidden:YES];
                  [self.friendsView setHidden:NO];
                  [self.neighboursView setHidden:YES];
                  break;
             case 2:

                  [self.sidetableView setHidden:YES];
                  [self.neighboursView setHidden:NO];
                  [self.friendsView setHidden:YES];
                  break;
      }
}

答案 3 :(得分:0)

您的代码未被执行,您必须

return cell;

显示它